Это странно:
У меня есть представление, содержащее повернутый CALayer. Слой вращается с использованием CABasicAnimation на траектории transform.rotation.z
. Работает нормально.
Затем представление, включающее этот слой, освобождается, и через некоторое время я снова загружаю все. Я воссоздаю вид и повернутый слой и применяю эту CABasicAnimation. В некоторых ситуациях анимация просто не запускается.
Итак, что я делаю дальше: запускаю отложенный селектор, чтобы запустить анимацию, если она остановилась. Но так как нажатие на него, когда он уже запущен, вызывает заметную заминку на экране, я проверяю, существует ли объект анимации:
CABasicAnimation *anim = [rotatedLayer animationForKey:@"transform.rotation.z"];
if (!anim) {
[self startRotating];
}
К сожалению, когда анимация не происходит, у меня есть объект CABasicAnimation. Логично, потому что я это создал. Анимация просто не запускается. Однако, когда я продолжаю применять его еще раз через одну секунду или около того, он работает.
Я даже получаю сообщение animiationDidStart от делегата:
- (void)animationDidStart:(CAAnimation *)theAnimation {
NSLog(@"animation started!!!!");
}
Есть большая вероятность, что это не ошибка, а особенность.
Есть ли способ дать этому объекту CABasicAnimation удар, чтобы он запустился, даже если CoreAnimation думает, что он уже запущен (что иногда не так), не давая ему удар в зад, когда он действительно был уже работает?