Mam CABasicAnimation
i chcę uruchomić po opóźnieniu. W UIKit mogę określić opóźnienia. Protokół CAMediaTiming
ma właściwość timeOffset
, ale nie widzę żadnego efektu. Moją kolejną próbą jest użycie GCD do opóźnienia, ale wydaje się, że to przesada.Jak opóźnić zadzwonienie do CABasic?
Odpowiedz
Nie powinieneś używać właściwości [CAMediaTiming beginTime]
(reference)?
Zobacz Dostosowywanie czasu animacji w Core Animation Programming Guide.
CABasicAnimation *animation;
animation.beginTime = CACurrentMediaTime() + 0.3; //0.3 seconds
Pamiętaj tylko, że jest to 'CACurrentMediaTime() + yourDelay' –
Nie jestem w stanie użyć tego dla AVVideoCompositionCoreAnimationTool. Jedyne, co działa, to AVCoreAnimationBeginTimeAtZero. Chcę trochę opóźnienia w mojej animacji ... – Nil
@grisleyB, Ten sam problem dotyczy mnie. Znalazłeś coś? –
w 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")
}
gdzie klucz linia za opóźnienie wynosi:
scalePulseAnimation.beginTime = CACurrentMediaTime() + myDelay
Chciałbym po prostu użyć GCD. 'dispatch_after (popTime, dispatch_get_main_queue(),^(void) { <# kod do wykonania w głównej kolejce po opóźnieniu #> });' – BooRanger
@BooRanger co jest nie tak z właściwością 'beginTime'? –
[Ta odpowiedź] (http://stackoverflow.com/a/11625742/608157) powinien odpowiedzieć na twoje pytanie –