web-dev-qa-db-ja.com

CABasicAnimationを遅延させる方法は?

CABasicAnimationがあり、遅延後に開始したい。 UIKitでは、遅延を指定できます。 CAMediaTimingプロトコルにはtimeOffsetプロパティがありますが、効果が見られません。私の次の試みは、GCDを使用してそれを遅らせることですが、やり過ぎのように感じます。

46
openfrog

[CAMediaTiming beginTime]プロパティ( reference )を使用すべきではありませんか?

Core Animation Programming Guideアニメーションのタイミングのカスタマイズを参照してください。

CABasicAnimation *animation;
animation.beginTime = CACurrentMediaTime() + 0.3; //0.3 seconds delay
117
trojanfoe

In Swift 3.0:

func animateYourView () {
   let myDelay = 5.0
   let scalePulseAnimation: CABasicAnimation = CABasicAnimation(keyPath: "transform.scale")
   scalePulseAnimation.beginTime = CACurrentMediaTime() + myDelay
   scalePulseAnimation.duration = 0.5
   scalePulseAnimation.repeatCount = 2.0
   scalePulseAnimation.autoreverses = true
   scalePulseAnimation.fromValue = 1.0
   scalePulseAnimation.toValue = 0.5
   myView.layer.add(scalePulseAnimation, forKey: "scale")
}

遅延の重要な行は次のとおりです。

  scalePulseAnimation.beginTime = CACurrentMediaTime() + myDelay
16
Dave G