如何延迟CABasicAnimation?

时间:2013-02-27 16:05:55

标签: ios uikit core-animation cabasicanimation

我有一个CABasicAnimation,想要在延迟后启动它。在UIKit我可以指定延迟。 CAMediaTiming协议具有timeOffset属性,但我看不到效果。我的下一个尝试是使用GCD延迟它,但感觉有点矫枉过正。

2 个答案:

答案 0 :(得分:114)

您是否应该使用[CAMediaTiming beginTime]属性(reference)?

请参阅Core Animation Programming Guide中的自定义动画的时间

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

答案 1 :(得分:15)

在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