Animating CALayer background color and update model value
我想为UIView中的子图层(在
我需要多次将图层的当前背景色设置为新的着色色(每次使用不同的着色色),因此需要更新backgroundColor的模型值(我不能在动画上使用
使用CABasicAnimation,如果我不更新模型值(我当然会在完成动画后重置颜色),则可以使变色动画正常工作。
当我尝试更新模型值时,颜色会立即发生变化,并且动画会丢失。
我尝试禁用隐式动画并使用
如何更新
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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() } |
为动画使用明确的
1 2 3 4 5 6 7 8 9 10 11 | 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 } |