我有switch語句控制我的背景漸變。它很好地工作(梯度改變),但它突然改變。我希望這些漸變能夠以0.25的持續時間淡入對方。我的代碼嘗試在這下面。Swift - 使用animateWithDuration淡出CAGradientLayer
控制的背景switch語句:控制梯度
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 - Yikes。很高興我抓住了!這裏的修復就像從configureGradient函數中刪除self.layer.addSublayer(gradientLayer)一樣簡單,然後將它移動到prepareGradient中? (我上面編輯了我的代碼。) – Joe