Используйте метод анимации UIView:
animateWithDuration:delay:options:animations:completion:
и используйте параметр UIViewAnimationOptionRepeat
Например, для UIButton *
розетки с именем button
:
- (void)viewDidLoad
{
[super viewDidLoad];
[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear animations:^{
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
self.button.transform = transform;
} completion:NULL];
}
Поскольку он вращается вокруг меня, я просто поворачиваю его по пи радианам, а не по 2pi.Вы можете использовать любой угол, какой захотите.
Редактировать
Чтобы остановить анимацию, просто создайте другую короткую анимацию, начиная с текущего состояния, например
- (void)stopRotating {
[UIView animateWithDuration:0.1 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveLinear animations:^{
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI * 0.05);
self.button.transform = transform;
} completion:NULL];
}
Это обеспечивает очень короткую анимацию, которая переопределяет текущую анимацию.Обратите внимание, что угол преобразования умножается на 0,05, что является отношением 0,1 / 2,0, что означает, что скорость вращения для этого небольшого сегмента совпадает со скоростью непрерывного вращения.