【发布时间】:2016-03-28 21:03:21
【问题描述】:
我有 switch 语句来控制我的背景渐变。它工作得很好(渐变变化),但是它突然改变了。我希望这些渐变以 0.25 的持续时间相互淡入。我的代码尝试如下。
控制背景的开关语句:
switch backgroundInput{
case 50...69:
self.view.configureGradient([gradientColor1, gradientColor2])
case 70...90:
self.view.configureGradient([gradientColor2, gradientColor3])
case 91...110:
self.view.configureGradient([gradientColor3, gradientColor4])
case 111...130:
self.view.configureGradient([gradientColor4, gradientColor5])
case 131...150:
self.view.configureGradient([gradientColor5, gradientColor6])
case 151...170:
self.view.configureGradient([gradientColor6, gradientColor7])
default:
self.view.configureGradient([lightPurple, lightBlue])
}
控制渐变的扩展 这是我尝试动画持续时间的地方
extension UIView {
private func prepareGradient() -> CAGradientLayer {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
gradientLayer.zPosition = -1
self.layer.addSublayer(gradientLayer)
return gradientLayer
}
func configureGradient(colors:[CGColor]) {
let gradientLayer = prepareGradient()
UIView.animateWithDuration(0.25, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
gradientLayer.colors = colors
}, completion: nil)
}
}
如何调整上面的代码以将渐变层从一个渐变到另一个? (不相关 - 在子层上不断“添加子层”对内存有害吗?)
【问题讨论】:
-
是的,不断添加更多子层是不好的。您应该创建一个渐变层,然后修改其属性以更新渐变。如果您仍然遇到问题,请修复该问题,然后返回并使用新代码更新您的问题。
-
@robmayoff - 哎呀。很高兴我抓住了!这里的修复是否像从 configureGradient 函数中删除 self.layer.addSublayer(gradientLayer) 并将其移动到 prepareGradient 一样简单? (我在上面编辑了我的代码。)
标签: ios swift fade cagradientlayer animatewithduration