Я знаю, как перемещать слой на ощупь. Но я также хотел бы иметь возможность вращать изображение.
Есть ли какой-нибудь пример кода, который показывает, как это сделать? Или кто-нибудь может дать мне совет?
Спасибо!
Я знаю, как перемещать слой на ощупь. Но я также хотел бы иметь возможность вращать изображение.
Есть ли какой-нибудь пример кода, который показывает, как это сделать? Или кто-нибудь может дать мне совет?
Спасибо!
Самый простой способ сделать это - использовать свойство трансформации слоя:
float angle = M_PI; //rotate 180°, or 1 π radians
layer.transform = CATransform3DMakeRotation(angle, 0, 0.0, 1.0);
Первый аргумент функции CATransform3DMakeRotation - это величина поворота в радианах. Следующие три описывают вектор, вокруг которого нужно вращаться. Это описание вектора по оси Z, фактически перпендикулярного экрану. Это повернет слой вверх ногами.
В итоге я сделал это так:
CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
[[self viewWithTag:999] setTransform:transform];
Обратите внимание, что угол указывается в радианах.
Вы должны использовать свойство трансформации представления. В Руководстве по программированию для iPhone OS есть пример кода для поворота изображения в разделе Запуск в ландшафтном режиме
Вам следует взглянуть на пример Apple MoveMe, чтобы узнать, как перемещаться слой, основанный на прикосновении. Он также применяет некоторые преобразования масштабирования по мере того, как вы это делаете, так что это должно служить разумным примером применения преобразований поворота.