iOS - ScrollView 上的多种背景颜色

iOS - multiple background colors on ScrollView

我有一个带有 UIScrollViewController 的 UIViewController。 我目前使用以下代码为 ScrollView 的背景着色:

    UIImage* backgroundImage =[UIImage imageNamed:@"black_backg.png"];
self.scrollView.backgroundColor = [UIColor colorWithPatternImage:backgroundImage];

这非常有效,但它为整个视图着色;我想做的是只给前 50% 的人上色。其余的可以保持白色。 我试图添加一个 UIView 和颜色,但它出现在 UIScrollView 的顶部,而不是在它下面。

我该怎么办? 谢谢

您可以使滚动视图清晰,然后将其放在彩色视图之上。如果您正在寻找渐变效果,可以使用易于使用的 CAGradientLayer。要使用渐变完成您正在寻找的东西,您可以这样做:

let layer = CAGradientLayer()
    layer.startPoint = CGPoint(x: 0, y: 0)
    layer.endPoint = CGPoint(x: 0, y: 1)
    layer.colors = [UIColor.blackColor().CGColor, UIColor.whiteColor().CGColor]

    layer.frame = self.view.bounds

    self.view.layer.insertSublayer(layer, atIndex: 0)

我没有运行这个,所以你可能需要调整起点和终点来获得你想要的效果

根据评论,以编程方式它看起来像这样:

self.view.addSubview(coloredView1)
self.view.addSubview(coloredView2) 
self.view.addSubview(scrollView)

使用这种方法,您还必须手动构建 rects

我刚刚做了一个简单的示例项目来测试这个。这是我的代码:

class ViewController: UIViewController {

let scrollView: UIScrollView = UIScrollView()
let coloredView1: UIView = UIView()
let coloredView2: UIView = UIView()

override func viewDidLoad() {
    super.viewDidLoad()

    coloredView1.backgroundColor = .blueColor()
    coloredView2.backgroundColor = .greenColor()

    self.view.addSubview(coloredView1)
    self.view.addSubview(coloredView2)
    self.view.addSubview(scrollView)
}


override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    self.scrollView.frame = self.view.bounds

    self.coloredView1.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.bounds.height / 2)

    self.coloredView2.frame = CGRect(x: 0, y: self.coloredView1.frame.size.height, width: self.view.bounds.width, height: self.view.bounds.height / 2)
}

}

现在,我打赌我会因为不使用故事板而在这里受到抨击。使用故事板确实更容易,但更容易用代码在 Whosebug 中显示。