2015-05-30 2 views
2

Я хочу повернуть UIImage, мне удалось это сделать с помощью кода ниже, однако, когда я снова нажимаю кнопку rotate, изображение больше не вращается, может кто-нибудь объяснить, почему?Повторяющаяся анимация на кране

@IBAction func rotate(sender: UIButton) { 
    UIView.animateWithDuration(0.2, animations: { 
     self.shape.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4) * 2) 
    }) 
} 

ответ

2

Вы меняете преобразование вида формы изображения в новое фиксированное значение. Если вы снова нажмете на него, это преобразование уже имеет это значение. Вы снова установите преобразование на одно и то же значение, что ничего не меняет.

Вам нужно определить переменную экземпляра, чтобы отслеживать поворот.

var rotation: CGFloat = 0 


@IBAction func rotate(sender: UIButton) 
{ 
    UIView.animateWithDuration(0.2, animations: 
    { 
    self.rotation += CGFloat(M_PI_4) * 2 //changed based on Daniel Storm's comment 
    self.shape.transform = CGAffineTransformMakeRotation(rotation) 
    }) 
} 

Таким образом, каждый раз, когда ваш нажмите на кнопку вы измените переменную вращения от его предыдущего значения на новое значение и повернуть на этот новый угол.

+2

Не должно быть 'self.rotation' внутри' block'? –

+0

Спасибо, что так много, фантастическое объяснение с рабочим результатом, ты звезда! :) –

+0

@ DanielStorm Да, это должно было быть :) –

Смежные вопросы