Перемещение изображения вниз по оси z в основной графике

У меня есть UIImageView, я хочу уплывать в фоновом режиме. Он должен уклоняться, когда он движется вдоль оси z и сходиться к центру, как будто вы представляете что-то, удаляющееся от вас.

Я попробовал этот кусок кода

theImageView.layer.transform = CATransform3DTranslate(theImageView.layer.transform,1,1, 
-100);

И это

theImageView.layer.transform = CATransform3DTranslate(theImageView.layer.transform,0, 0, 
-300);    

Но изображение находится в том же месте. Разве это не возможно для такого рода вещей в основной графике?

Как люди справляются с этим, если это невозможно через CATransform? Используя вместо этого какой-то хак с масштабированием?

Большое спасибо -Код

2 ответа

Решение

Хотя Core Animation работает в трехмерном пространстве, по умолчанию она не использует перспективу. Чтобы создать перспективное преобразование, вы должны изменить член матрицы преобразования напрямую:

CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / -2000;  // this value affects the "amount" of perspective

(см., например, http://watchingapple.com/2008/04/core-animation-3d-perspective/).

Вместо использования UIImageView, просто используйте новый CALayer, который вы добавляете в качестве подслоя к текущему слою представления. Установите для свойства содержимого CALayer значение CGImageref вашего UIImage.

Вот документация о базовом уровне анимации, это очень мощный способ использования базовой графики.

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html#//apple_ref/doc/uid/TP40006082-SW1

Также проверьте предоставление слоя слоя в приведенной выше ссылке.

Другие вопросы по тегам