Повернуть UIView iPhone

Я работаю над игрой-головоломкой, и мне нужно поворачивать части головоломки на угол 90 градусов при каждом двойном нажатии.

Я пробовал это сделать двумя разными способами. Первый метод таков:

[UIView beginAnimations:@"rotate" context:nil];
[UIView setAnimationDuration:0.5];
self.transform = CGAffineTransformMakeRotation(90);
[UIView commitAnimations];

Единственная проблема заключается в том, что деталь НЕ вращается на 90 градусов; он вращается примерно на 100 градусов, и эта анимация изменяет кадр части головоломки UIView .

Это мой вывод на консоль:

frame BEFORE ROTATION: {{35, 178}, {80, 80}}

frame AFTER ROTATION: {{21.3172, 164.317}, {107.366, 107.366}}

Второй метод I пробовал вот такой:

CABasicAnimation* spinAnimation = [CABasicAnimation
                                       animationWithKeyPath:@"transform.rotation"];
spinAnimation.toValue = [NSNumber numberWithFloat:1];
[self.layer addAnimation:spinAnimation forKey:@"spinAnimation"];

Проблема с этим методом в том, что после завершения вращения он возвращает мой UIView в его предыдущее состояние.

Как я могу повернуть пазл с анимацией, чтобы избежать этих проблем?

12
задан Eliza Wilson 27 June 2014 в 01:36
поделиться