【问题标题】:Background colour gradient doesn't cover the entire view Xcode背景颜色渐变不覆盖整个视图 Xcode
【发布时间】:2020-01-07 16:07:44
【问题描述】:

对视图应用渐变后,结果如图所示。渐变色(黄色部分)不会延伸到视图边界。黄色和红色都是同一个视图。无法弄清楚发生了什么。这是我的代码:

let gradientLayer = CAGradientLayer()
        gradientLayer.frame = bounds
        //gradientLayer.frame = frame
        //gradientLayer.bounds = frame
        gradientLayer.colors = [colorOne.cgColor, colorTwo.cgColor]
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.startPoint = CGPoint(x: 1.0, y: 1.0)
        gradientLayer.endPoint = CGPoint(x: 0.0, y: 0.0)

        layer.insertSublayer(gradientLayer, at: 0

colorOne 和 colorTwo 在别处定义。

)

有人遇到同样的问题吗?

【问题讨论】:

标签: swift xcode colors background gradient


【解决方案1】:

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

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    gradientLayer.frame = yourView.bounds
}

然后它将填满整个视图。

【讨论】:

  • gradientLayer.frame = yourView.bounds 可能会更好。
  • 别提了!
  • 也许我说得太早了……现在改变方向时它不会更新到边界。
  • 尝试:覆盖 func layoutSubviews() { gradientLayer.frame = self.bounds }
【解决方案2】:

我说得太早了……现在改变方向时它不会更新到边界(它同时显示水平和垂直渐变) 有什么想法吗?

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多