Понимание CATransform3DRotate / CATransform3DMakeRotation
Я пытаюсь понять, как создать глубину, восприимчивую к моему UIView
как это:
Я пробовал этот код:
var rotationWithPerspective = CATransform3DIdentity;
rotationWithPerspective.m34 = -1.0/500.0/2/2
rotationWithPerspective = CATransform3DRotate(rotationWithPerspective, 22.5, 0, 1, 0);
preview.layer.transform = rotationWithPerspective
который генерирует перспективу. Тем не менее, он переворачивает представление по какой-то причине.
1) Как я могу избежать "переворачивания" после преобразования?
2) Будет ли "перспективная глубина", полученная в результате преобразования, одинаковой для каждого заданного UIView
или это зависит от UIView
размер и т. д.?
Благодарю вас!
2 ответа
Решение
CATransform3DRotate
ожидает радианы не градусы. Вы вращаетесь на 22,5 радиана, что похоже на 1200 градусов. Наверное, поэтому ваше изображение перевернуто. Вы, вероятно, хотите использовать это:
let radians = 22.5 * M_PI / 180
rotationWithPerspective = CATransform3DRotate(rotationWithPerspective, radians, 0, 1, 0);
За 2)
- Это за UIView.
- Если вы хотите применить к подслоям, вы можете использовать sublayerTransform. Например, preview.layer.sublayerTransform = вращение с учетом
Вы можете прочитать больше об этом в iOS Core Animation - Advanced Techniques от Ника Локвуда. Надеюсь, что поможет.