질문 :
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 부
다음으로, 나는 이미지 효과, 아래의 예제 이미지를 번쩍 여러 가지 빛깔을주고, 연속으로 빠르게 색상을 통해 CAShapeLayer()
효과적으로 사이클에 CAKeyframeAnimation
애니메이션을 추가 할 수 있습니다.
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)
이미지 :
계산 모드'kCAAnimationDiscrete'을 시도하십시오. 현재 선형이 색상을 보간하려고 시도하며, 이산은하지 않습니다. 네가 더 잘할 수 있는지 확실하지 않니? – Alistra
고마워요, @Alistra. 나는'kCAAnimationDiscrete'을 시도했지만'kCAAnimationLinear'처럼 보이는 색상 사이의 부드러운 변화를 제공하지 않습니다. 내 이미지가 다소 오도 된 것 같습니다. 그러나 귀하의 제안은 내가 성취하려는 것을 정확하게 생각하게 만들었습니다. 감사합니다! – user4806509
배열에 더 많은 색을 사용하고 보간하지 마십시오. – Alistra