Перемещение изображения вниз по оси 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.
Вот документация о базовом уровне анимации, это очень мощный способ использования базовой графики.
Также проверьте предоставление слоя слоя в приведенной выше ссылке.