【发布时间】:2016-05-07 05:15:36
【问题描述】:
我最初在 viewDidLoad 中的第一个场景上创建了一个 CAGradientLayer。它是这样插入的:
self.view.layer.insertSublayer(myCAGradientLayer, atIndex: 0)
效果很好。但现在我需要在应用程序运行时更改渐变。用户将在场景 2 上做一些事情,然后回到场景 1,那里的渐变会发生变化。我建立了一个新的CAGradientLayer 并添加到与上面相同的视图中。
但是使用 viewWillAppear 不起作用。
这是一个例子:
let gLocations: [Float] = [0.0, 1.0]
let gLayer: CAGradientLayer = CAGradientLayer()
gLayer.colors = [UIColor.yellowColor().CGColor, UIColor.greenColor().CGColor]
gLayer.frame = self.view.bounds
gLayer.locations = gLocations
self.view.layer.insertSublayer(gLayer, atIndex: 0)
将以上内容添加到 viewWillAppear。然后将其添加到使用不同颜色的几个条件中。只有第一个选择的条件出现。其他条件句中的任何其他颜色都不会出现。
我认为部分问题在于我一直在做:
self.view.layer.insertSublayer(gLayer, atIndex: 0)
否则,渐变会出现在其他 UI 组件之上。我正在使用几种不同的渐变,它们都使用上面的代码。但我猜它们都不能插入到 index=0 处。
还有其他方法可以改变渐变吗?
【问题讨论】:
标签: ios swift uiview cagradientlayer