【问题标题】:CAGradientLayer: other UIObjects not showing upCAGradientLayer:其他 UIObjects 没有出现
【发布时间】:2018-07-12 21:01:28
【问题描述】:

当我在 iOS 上使用 CAGradientLayer 为我的视图控制器设置渐变时,我之前使用界面构建器放置的对象没有显示出来。当我拿掉 gradientLayer 函数时,这些对象就会出现。此外,当我以编程方式将这些对象添加为子视图时,它们会显示在 iOS 模拟器中。这是怎么回事?这是我的渐变层代码:

func setUpGradient(){
    let topColor=UIColor(red: 255/255, green: 149/255, blue: 56/255,alpha: 1)
let bottomColor=UIColor(red: 216/255, green: 57/255, blue: 177/255, 
alpha: 1)
    let gradientColors: [CGColor]=[topColor.cgColor,bottomColor.cgColor]
    var gradientLayer = CAGradientLayer()
    gradientLayer.frame = self.view.bounds
    gradientLayer.colors=gradientColors
    gradientLayer.startPoint=CGPoint(x: 0, y:0)
    gradientLayer.endPoint=CGPoint(x: 0, y:1)
    self.view.layer.addSublayer(gradientLayer)
}

【问题讨论】:

    标签: ios swift cagradientlayer


    【解决方案1】:

    原因很简单,就是通过这一行在 IB 中添加元素时,渐变层覆盖了所有元素

    self.view.layer.addSublayer(gradientLayer)
    

    所以你可以像这样在它们下面插入它

    self.view.layer.insertSublayer(gradientLayer,at:0)
    

    【讨论】:

    • 抱歉- swift 新手...感谢您的解释,但您的意思是“将其插入下方”。有什么方法可以使用界面编辑器添加其他组件,而不是在我创建渐变后以编程方式添加?
    • 你也可以继承 UIView 实现渐变添加并将该类分配给 IB 中的视图
    • 每个 UI 元素都是一个图层,因此插入意味着将渐变放在最后
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多