У меня есть CABasicAnimation
и я хочу запустить его после задержки. В UIKit я могу указать задержки. Протокол CAMediaTiming
имеет свойство timeOffset
но я не вижу эффекта. Моя следующая попытка - использовать GCD для отсрочки, но это похоже на излишество.
Как задержать CABasicAnimation?
Ответ 1
[CAMediaTiming beginTime]
вы не должны использовать [CAMediaTiming beginTime]
(ссылка)?
См. Настройка синхронизации анимации в Руководстве по программированию основной анимации.
CABasicAnimation *animation;
animation.beginTime = CACurrentMediaTime() + 0.3; //0.3 seconds delay
Ответ 2
В 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