[英]Animating CALayer background color and update model value
我想為我的UIView中的子圖層設置backgroundColor
更改動畫(在tintColorDidChange
)。
我需要多次從圖層的當前背景顏色動畫到新的色調顏色(每次都有不同的色調顏色),因此需要更新backgroundColor的模型值(我不能在動畫上使用removedOnCompletion = false
)。
使用CABasicAnimation如果我不更新模型值,我可以正常使用顏色更改動畫(當然,在動畫完成后顏色會重置)。 當我嘗試更新模型值時,顏色更改立即發生,動畫丟失。
我嘗試禁用隱式動畫並使用CATransation
更新模型值,但動畫仍然丟失。
如何更新backgroundColor
模型值並使我的淡入淡出動畫保持有效?
override func tintColorDidChange() {
super.tintColorDidChange()
let colourAnim = CABasicAnimation(keyPath: "backgroundColor")
colourAnim.toValue = self.tintColor.CGColor
colourAnim.duration = 1.0
self.spinnerLayer?.addAnimation(colourAnim, forKey: "colourAnimation")
CATransaction.begin()
CATransaction.setDisableActions(true)
self.spinnerLayer?.backgroundColor = self.tintColor.CGColor
CATransaction.commit()
}
對動畫使用顯式的fromValue
:
override func tintColorDidChange() {
super.tintColorDidChange()
let colourAnim = CABasicAnimation(keyPath: "backgroundColor")
colourAnim.fromValue = self.spinnerLayer!.backgroundColor
colourAnim.toValue = self.tintColor.CGColor
colourAnim.duration = 1.0
self.spinnerLayer?.addAnimation(colourAnim, forKey: "colourAnimation")
self.spinnerLayer?.backgroundColor = self.tintColor.CGColor
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.