2017-02-21 41 views
0

我有两个动画需要链接到组中。核心动画 - 组中的动画单独计时

他们看起来像这样:

func animate(circle: UIView) { 

    var animations = [CABasicAnimation]() 

    let opacityAnimation = CABasicAnimation(keyPath: "opacity") 
    opacityAnimation.repeatCount = Float.infinity 
    opacityAnimation.autoreverses = true 
    opacityAnimation.fromValue = 0.0 
    opacityAnimation.toValue = 0.40 

    animations.append(opacityAnimation) 

    let scaleAnimation = CABasicAnimation(keyPath: "transform.scale") 
    scaleAnimation.repeatCount = Float.infinity 
    scaleAnimation.autoreverses = true 
    scaleAnimation.fromValue = 0.8 
    scaleAnimation.toValue = 1 

    animations.append(scaleAnimation) 

    let group = CAAnimationGroup() 
    group.duration = 1.4 
    group.repeatCount = FLT_MAX 
    group.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
    group.animations = animations 

    circle.layer.add(group, forKey: nil) 
} 

有没有一种方法,我可以单独设置时间到第一动画和单独第二?例如,我希望opacityAnimation需要3秒,scaleAnimation需要1秒

我该怎么做?

+0

检查这个答案:http://stackoverflow.com/a/27884155/4831524 –

回答

1

试一下这段代码,我没有测试过这段代码。

func animate(circle: UIView) { 

     CATransaction.begin() 
     CATransaction.setCompletionBlock({ 

      let scaleAnimate:CABasicAnimation = CABasicAnimation(keyPath: "transform.scale") 
      scaleAnimate.fromValue = 1.0 
      scaleAnimate.toValue = 0.0 
      scaleAnimate.duration = 0.9 
      scaleAnimate.repeatCount = 1 
      scaleAnimate.removedOnCompletion = true 
      scaleAnimate.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn) 
      circle.layer.addAnimation(scaleAnimate, forKey: "scaleSmallAnimation") 
     }) 

     let opacityAnimation = CABasicAnimation(keyPath: "opacity") 
     opacityAnimation.repeatCount = 1 
     opacityAnimation.autoreverses = true 
     opacityAnimation.fromValue = 1.0 
     opacityAnimation.toValue = 0.40 
     opacityAnimation.duration = 2.0 

     circle.layer.addAnimation(opacityAnimation, forKey: "opacity") 
     CATransaction.commit() 
    } 
+0

规模是不行的,它不透明度动画只 –

+0

@Alexey,代码更新,测试,工作正常.. –