Самый простой способ, который я знаю, это использовать Core Animation. По сути, вы создаете основной блок анимации, затем выполняете преобразование вращения, настройку и счетчик повторений. Затем Core Animation позаботится обо всем, что необходимо для создания этого колебательного эффекта.
Чтобы запустить блок Core Animation, просто выполните:
[UIView beginAnimations:@"any string as animationID" context:self];
[UIView setAnimationRepeatCount:10];
// rotate
[UIView commitAnimations];
не проверено. Но может случиться так, что вам также придется сделать:
[UIView setAnimationBeginsFromCurrentState:YES];
A.F.A.I.K. setAnimationRepeatCount будет иметь эффект, что анимация будет выполнена, отменена, сделана, отменена, сделана, отменена, сделана ... столько раз, сколько вы укажете. Поэтому вы можете сначала повернуть влево без счетчика повторений, а затем с этого момента начать колебаться с счетчиком повторений. Когда вы закончите, вы можете захотеть вернуться к преобразованию идентичности (= вращение и масштабирование не применено).
Вы можете связать анимацию, установив делегата анимации с помощью
[UIView setAnimationDelegate:self]
, а затем
[UIView setAnimationDidStopSelector:@selector(myMethod:finished:context:)];
и как только анимация остановится, будет вызван этот метод. См. Документацию класса UIView, чтобы узнать, как реализовать этот метод, который будет вызываться при остановке анимации. По сути, внутри этого метода вы выполняете следующий шаг (то есть вращение назад или что-то еще) с новым блоком анимации, но с тем же контекстом и идентификатором анимации, а затем (при необходимости) задаете другой didStopSelector.
UPDATE:
Вы можете проверить:
[UIView setAnimationRepeatAutoreverses:YES];
это будет качаться взад и вперед автоматически.