1.0秒后CAKeyframeAnimation键时间不执行

时间:2017-07-03 17:42:48

标签: ios swift caanimation cakeyframeanimation

由于一些奇怪的原因,当我在1秒钟后输入关键时间时,它们似乎没有执行,但是当我将所有关键时间保持1秒钟时,它们都会正确执行。不知道为什么会这样,任何人都有任何想法?这是我正在使用的功能:

 func animateKeyFrameGroup() {

let opacity = CAKeyframeAnimation(keyPath: "opacity")
opacity.values = [1, 0, 1]
opacity.keyTimes = [0.1, 1.0, 1.5]

let translation =  CAKeyframeAnimation(keyPath:"transform.translation")
translation.values = [CGPoint(x: 150, y: 300),CGPoint(x: 100, y: 100),CGPoint(x: 150, y: 300)]
translation.keyTimes = [0.1, 1.0, 1.5]

let cornerRadius =  CAKeyframeAnimation(keyPath: "cornerRadius")
cornerRadius.values = [circle.bounds.width, circle.bounds.width/2, circle.bounds.width]
cornerRadius.keyTimes = [0.1, 1.0, 1.5]

let borderColor =  CAKeyframeAnimation(keyPath: "borderColor")
borderColor.values = [UIColor.black.cgColor, UIColor.cyan.cgColor, UIColor.black.cgColor]
borderColor.keyTimes = [0.1, 1.0, 1.5]

let keyframeAnimationGroup = CAAnimationGroup()
keyframeAnimationGroup.animations = [translation, cornerRadius, borderColor, opacity]
keyframeAnimationGroup.duration = 2
keyframeAnimationGroup.isRemovedOnCompletion = false
keyframeAnimationGroup.fillMode = kCAFillModeForwards
circle.layer.add(keyframeAnimationGroup, forKey: nil)
  }

1 个答案:

答案 0 :(得分:0)

根据Apple documentation

  

数组中的每个值都是介于0.0和1.0之间的浮点数,用于定义应用相应关键帧值的时间点(指定为动画总持续时间的一小部分)。数组中的每个连续值必须大于或等于先前的值。通常,数组中元素的数量应该与元素的数量相匹配   值    财产或控制点的数量   路径   属性。如果他们不这样做,动画的时间可能不是你所期望的。

因此,您可以更改总动画持续时间:keyframeAnimationGroup.duration = 2

和keyTimes是总持续时间的分数。喜欢:keyTime等于0.5 - > 2 * 0.5 = 1秒,keyTime等于0.75 - > 2 * 0.75 = 1.5秒等。