渐变不填满所有的UIView

Gradient does not fill all the UIView

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

我的实际代码是:

    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 的初学者,所以一切皆有可能!

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

这与在布局子视图之前不应用故事板中的约束有关。在 viewDidLoad() 处,视图具有情节提要中的固定大小。如果您移动将图层框架设置为 viewDidLayoutSubviews() 的代码,则约束已应用于 topView 并且它具有正确的框架。然后您可以设置图层的框架。

将此添加到您的 ProfileController

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    gradientLayer.frame = topView.frame
}

然后它将填满整个视图。