Как "вращать" слой/представление (например, так же, как в enigmo)

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

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

Спасибо!

Ответ 1

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

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

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

Ответ 2

В итоге я сделал это так:

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

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

Ответ 3

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

Ответ 4

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