在一番胡闹之后,我发现我的问题出在安全梯度课上。因为我使用的是该类的一个全局实例,所以无法重用同一个变量blueToGreen。
解决方案不是创建一个类并拥有该类的一个全局实例,而是创建一个承载子类函数的CAGradientLayer扩展。换句话说,我更改了此代码:
class safeGradiants {
var blueToGreen: CAGradientLayer!
init() {
self.blueToGreen = CAGradientLayer()
self.blueToGreen.colors = [UIColor.blue, UIColor.]
self.blueToGreen.startPoint = CGPoint(x: 0.0, y: 0.5)
self.blueToGreen.endPoint = CGPoint(x: 1.0, y: 0.5)
}
}
extension CAGradientLayer {
class var blueToGreen: CAGradientLayer {
let blueToGreen = CAGradientLayer()
blueToGreen.colors = [UIColor.blue, UIColor.green]
blueToGreen.startPoint = CGPoint(x: 0.0, y: 0.5)
blueToGreen.endPoint = CGPoint(x: 1.0, y: 0.5)
return blueToGreen
}
}