Как повторно активировать примененную CABasicAnimation или проверить, действительно ли CABasicAnimation работает прямо сейчас? - PullRequest
0 голосов
/ 18 сентября 2011

Это странно:

У меня есть представление, содержащее повернутый 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 думает, что он уже запущен (что иногда не так), не давая ему удар в зад, когда он действительно был уже работает?

1 Ответ

1 голос
/ 18 сентября 2011

Пройдите паузу и возобновите анимацию, как указано в Технические вопросы и ответы Apple

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...