理解CATransform3D

6

我正在一个UIView中使用CATransform3DMakeRotation,尝试做一个45度的变换,就像它在向后倾斜:

http://cl.ly/2A2p1W1e2N3a1W181r35

这是我目前的“代码”,但显然并不能达到效果。

CATransform3D _tr = CATransform3DMakeRotation(3.14/4, 1, 0, 0);
view.layer.transform = _tr;

请帮我理解参数。谢谢。


3
提醒一下,可以使用M_PI代替常数3.14。还有,可以使用M_PI_4代替3.14/4。 - Jason Harwig
1个回答

4

基本上,您的代码是正确的,但要获得透视效果,您需要将父视图层的sublayerTransform设置为类似于以下内容:

CATransform3D perspectiveTransform = CATransform3DIdentity;
perspectiveTransform.m34 = 1.0 / -850;
myView.layer.sublayerTransform = perspectiveTransform;

您可以尝试不同的值来获得不同程度的失真效果。


7
请问您能说明一下您在做什么吗?我想学习,而不仅仅是复制粘贴和调整数值。 - Diego Torres
3
为了后人的参考,苹果公司解释了在这里提到的 .m34 和 850 的含义:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid/TP40004514-CH8-SW13 - AlleyGator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接