Как «повернуть» слой / вид (например, как в загадке) - PullRequest
11 голосов
/ 28 октября 2008

Я знаю, как переместить слой на основе касания. Но я также хотел бы иметь возможность вращать изображение.

Есть ли пример кода, который показывает, как это сделать? Или кто-нибудь может дать мне совет?

Спасибо!

Ответы [ 4 ]

20 голосов
/ 28 октября 2008

Самый простой способ сделать это - использовать свойство transform слоя:

float   angle = M_PI;  //rotate 180°, or 1 π radians
layer.transform = CATransform3DMakeRotation(angle, 0, 0.0, 1.0);

Первым аргументом функции CATransform3DMakeRotation является величина вращения в радианах. Следующие три описывают вектор, вокруг которого вращается. Это описание вектора по оси Z, поэтому он эффективно перпендикулярен экрану. Это будет вращать слой, чтобы он был вверх ногами.

11 голосов
/ 28 октября 2008

Я закончил так:

CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
[[self viewWithTag:999] setTransform:transform];

Обратите внимание, что угол в радианах.

1 голос
/ 28 октября 2008

Вы бы использовали свойство transform представления. Примерный код для поворота вида в Руководстве по программированию для iPhone OS, в разделе Запуск в ландшафтном режиме

0 голосов
/ 28 октября 2008

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

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