如何延迟CABasicAnimation?

ope*_*rog 48 core-animation uikit cabasicanimation ios

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

tro*_*foe 122

你不应该使用该[CAMediaTiming beginTime]属性(参考)?

请参阅" 核心动画编程指南"中的" 自定义动画的时间".

CABasicAnimation *animation;
animation.beginTime = CACurrentMediaTime() + 0.3; //0.3 seconds delay
Run Code Online (Sandbox Code Playgroud)

  • 请记住它是`CACurrentMediaTime()+ yourDelay` (75认同)
  • 我无法将其用于AVVideoCompositionCoreAnimationTool。唯一起作用的是AVCoreAnimationBeginTimeAtZero。我希望动画能有所延迟... (2认同)

Dav*_*e G 17

在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")
}
Run Code Online (Sandbox Code Playgroud)

延迟的关键行是:

  scalePulseAnimation.beginTime = CACurrentMediaTime() + myDelay
Run Code Online (Sandbox Code Playgroud)