плавно останавливая вращение основной анимации - PullRequest
0 голосов
/ 11 сентября 2009

Как остановить вращение нарисованного CALayer на iPhone?

Это

CATransform3D pausetransform = ((CALayer *)[layer presentationLayer]).transform;
[layer removeAllAnimations];
layer.transform = pausetransform;

останавливает анимацию, затем сразу немного поворачивает слой назад. Возможно, потому что после установки значения pausetransform анимация продолжается некоторое время.

Установка значения layer.transform в методе делегата - (void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finishednormally анимации кратко отображает слой в начальной позиции анимации до его поворота в правильную позицию.

Ответы [ 2 ]

1 голос
/ 14 сентября 2009

Оказывается, таблица UIActionSheet, которую я настраивал при вызове [layer removeAllAnimations], заняла так много времени, чтобы отобразить, что она откладывает фактическую остановку анимации. Переместив настройку UIActionSheet в метод делегата - (void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finishednormally, вращение теперь плавно останавливается.

0 голосов
/ 11 сентября 2009

Другой способ - позвонить

[view.layer removeAnimationForKey:@"name of your animation"];

Однако в обоих случаях, в зависимости от того, как вы настроили анимацию, анимация останавливается на следующей итерации анимации. Если, скажем, вы вращались с шагом 10 градусов, анимация остановилась бы до следующего шага в 10 градусов.

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