Простая анимация ios: повернуть окно и повернуть вспять - PullRequest
1 голос
/ 22 февраля 2012

Я пытаюсь выполнить простую анимацию, используя Какао. Одна кнопка заставляет изображение переворачиваться по оси Y при нажатии, а затем переворачивается при повторном нажатии. Другая кнопка должна заставить окно перевернуться вокруг своей оси x и обратно таким же образом. Код изображения работает, в то время как окно будет переворачиваться вертикально при первом нажатии, но не переворачивается при втором.

Изображение по оси Y

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

[pic.layer setValue:[NSNumber numberWithInt:3.14159] forKeyPath:@"transform.rotation.y"];

[UIView commitAnimations];

Окно по оси X

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

[window.layer setValue:[NSNumber numberWithInt:3.14159] forKeyPath:@"transform.rotation.x"];

[UIView commitAnimations];

У меня проблемы с поиском проблемы, так как коды почти идентичны. Помощь будет оценена, спасибо.

1 Ответ

2 голосов
/ 23 февраля 2012

Мне удалось заставить код работать в немного другом формате.

CATransform3D flip = CATransform3DMakeRotation(M_PI, 1.0, 0.0, 0.0);
if (CATransform3DEqualToTransform(window.layer.transform, flip))
{
    flip = CATransform3DMakeRotation(M_PI, 0.0, 0.0, 0.0);
}


[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

window.layer.transform = flip;

[UIView commitAnimations];

Из того, что я могу сказать, всякий раз, когда он получал команду поворота, он рассматривал окно только в своем первоначальном состоянии. Это означало, что каждая новая команда переворачивалась, она видела, что уже находилась в запрошенной позиции, и ничего не делала. Как только я понял это, мне просто нужно было дать команду вернуть его в нормальное состояние. Для меня до сих пор загадка, почему код в моем вопросе работал для оси Y, а не для X.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...