2010-11-10 3 views
1

У меня есть UIImageView, который я хочу поплыть в фоновом режиме. Он должен уклоняться, когда он движется вдоль оси z и сходится к центру, поскольку вы хотите, чтобы что-то уходило от вас.Перемещение изображения по оси 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 работает в 3D-пространстве, по умолчанию он не использует перспективу. Для того, чтобы создать перспективное преобразование, вы должны изменить элемент матрицы преобразования непосредственно:

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

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

0

Вместо того, чтобы использовать 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

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

Смежные вопросы