Я не думаю, что UIKit
анимации предоставляют вам прямую ключевую анимацию для получения эффекта колебаний.Мы можем попытаться добиться этого, используя делегаты, вызывая одну анимацию за другой, но это не так эффективно, как CAKeyframeAnimation
.Чтобы использовать это, вы должны будете включить QuartzCore
framework в ваш проект и #import <QuartzCore/QuartzCore.h>
.Вы можете добиться эффекта колебания, выполнив что-то вроде этого:
self.mover.center = CGPointMake(160, 240);
CAKeyframeAnimation *animation;
animation = [CAKeyframeAnimation animationWithKeyPath:@"position.x"];
animation.duration = 3.0f;
animation.repeatCount = 10;
animation.values = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:160.0f],
[NSNumber numberWithFloat:320.0f],
[NSNumber numberWithFloat:160.0f],
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:160.0f], nil];
animation.keyTimes = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.25],
[NSNumber numberWithFloat:.5],
[NSNumber numberWithFloat:.75],
[NSNumber numberWithFloat:1.0], nil];
animation.removedOnCompletion = NO;
[self.mover.layer addAnimation:animation forKey:nil];
Этот фрагмент кода колеблется в направлении слева направо довольно близко к вашему описанию, хотя для получения необходимого эффекта вам, возможно, придется изменить егонемного.