渐变并没有填满所有的UIView

时间:2017-11-22 18:04:25

标签: ios iphone swift uiview cagradientlayer

我想创建一个渐变图层并将其插入视图中,但视图未完全填充...

我的实际代码是:

    gradientLayer.frame = topView.bounds
    gradientLayer.colors = [UIColor.white.cgColor, UIColor.black.cgColor]

    topView.layer.insertSublayer(gradientLayer, at: 0)

This is my code and storyboard (In red is the part I want to fill)

This is my result...

我对此没有任何线索..它适用于全屏视图,但不是更多的视图..

当然,从故事板导入顶视图。也许我在view.bound中犯了一个错误。我不知道。我是swift和iOS的初学者,所以一切皆有可能!

编辑: 问题不是视图的大小,而是图层的大小太小,因为视图的背景颜色填充了所有空间而不是图层

1 个答案:

答案 0 :(得分:7)

这与故事板中的约束有关,直到子视图布局后才会应用。在viewDidLoad(),视图具有来自故事板的固定大小。如果您将设置图层框架的代码移动到viewDidLayoutSubviews(),则约束已应用于topView,然后它具有正确的框架。然后,您可以设置图层的框架。

将此添加到您的ProfileController

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    gradientLayer.frame = topView.frame
}

然后它将填满整个视图。