CAGradientLayer:其他 UIObjects 没有出现
Posted
技术标签:
【中文标题】CAGradientLayer:其他 UIObjects 没有出现【英文标题】:CAGradientLayer: other UIObjects not showing up 【发布时间】: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)
【问题讨论】:
【参考方案1】:原因很简单,就是通过这一行在 IB 中添加元素时,渐变层覆盖了所有元素
self.view.layer.addSublayer(gradientLayer)
所以你可以像这样在它们下面插入它
self.view.layer.insertSublayer(gradientLayer,at:0)
【讨论】:
抱歉- swift 新手...感谢您的解释,但您的意思是“将其插入下方”。有什么方法可以使用界面编辑器添加其他组件,而不是在我创建渐变后以编程方式添加? 你也可以继承 UIView 实现渐变添加并将该类分配给 IB 中的视图 每个 UI 元素都是一个图层,因此插入意味着将渐变放在最后以上是关于CAGradientLayer:其他 UIObjects 没有出现的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 通过 switch 语句为 CAGradientLayer 设置动画