Я пытаюсь применить анимацию вращения по количеству градусов к UIImageView и сохранить преобразование вращения в блоке завершения.
Проблема, с которой я сталкиваюсь, заключается в том, что при выполнении блока завершения появляется видимое мерцание, генерируемое переходом от конечного состояния анимации к блоку завершения.
Вот код, который я сейчас использую:
if (futureAngle == currentAngle) {
return;
}
float rotationAngle;
if (futureAngle < currentAngle) {
rotationAngle = futureAngle - currentAngle;
}else{
rotationAngle = futureAngle - currentAngle;
}
float animationDuration = fabs(rotationAngle) / 100;
rotationAngle = GLKMathDegreesToRadians(rotationAngle);
[CATransaction begin];
CABasicAnimation *rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.byValue = [NSNumber numberWithFloat:rotationAngle];
rotationAnimation.duration = animationDuration;
rotationAnimation.removedOnCompletion = YES;
[CATransaction setCompletionBlock:^{
view.transform = CGAffineTransformRotate(view.transform, rotationAngle);
}];
[view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
[CATransaction commit];
view.transformперед запуском анимации (и вам больше не нуженcompletionBlock); или (b) установивfillModeанимации наkCAFillModeForwardsи установивremovedOnCompletionнаfalse. - person Rob   schedule 28.06.2016