問題:通過顏色上的
CAShapeLayer()
如何在CAShapeLayer上快速循環顏色?在下面的代碼週期迅速。它 工作正常,但它使設備變暖。在
CAShapeLayer()
上有更好更多的 快速循環顏色嗎?
第1部分
在下面的代碼繪製,作爲一個例子,一個方形UIBezierPath()
,並且填充層CAShapeLayer()
。
let path = UIBezierPath()
path.moveToPoint(CGPoint(x: 0, y: 0))
path.addLineToPoint(CGPoint(x: 0, y: 100))
path.addLineToPoint(CGPoint(x: 100, y: 100))
path.addLineToPoint(CGPoint(x: 100, y: 0))
path.closePath()
let shape = CAShapeLayer()
shape.path = path.CGPath
shape.fillColor = UIColor.yellowColor().CGColor
第2部分。
接下來,我添加CAKeyframeAnimation
動畫到CAShapeLayer()
其有效地循環通過快速連續色調,給人的多色圖像閃爍效果,下面的示例圖像。
let colorsAnimation = CAKeyframeAnimation(keyPath: "fillColor")
colorsAnimation.values = [UIColor.redColor().CGColor, UIColor.yellowColor().CGColor, UIColor.greenColor().CGColor, UIColor.blueColor().CGColor]
colorsAnimation.keyTimes = [0.25, 0.5, 0.75, 1.0]
colorsAnimation.calculationMode = kCAAnimationLinear
colorsAnimation.removedOnCompletion = false
colorsAnimation.fillMode = kCAFillModeForwards
colorsAnimation.duration = 0.5
colorsAnimation.repeatCount = Float.infinity
shape.addAnimation(colorsAnimation, forKey: nil)
圖片:
嘗試computeMode'kCAAnimationDiscrete',當前你的線性嘗試插值顏色,離散不會這樣做。不知道你能做得更好嗎? – Alistra
謝謝,@Alistra。我確實嘗試過'kCAAnimationDiscrete',但它並沒有像'kCAAnimationLinear'似乎那樣提供顏色之間的平滑變化。我認爲我的形象有些誤導。然而,你的建議讓我更多地思考我想要達到的目標,所以謝謝! – user4806509
只需在陣列中使用更多顏色,不要插入 – Alistra