2017-02-21 14 views
0

私は2つのアニメーションをグループ化したい。コアアニメーション - グループ内のアニメーションの別々のタイミング

彼らは次のようになります。

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

チェックはANS: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、コード、更新テストされ、正常に動作して.. –

関連する問題