一起旋转X,Y和Z轴

时间:2016-04-23 04:37:11

标签: objective-c swift catransform3d

enter image description here

我首先在Illustrator或Photoshop中3D旋转平面图形,在设计工具中获取应用于它的精确角度(x,y和z),然后将相同的角度应用于放置在图像顶部的UILabel以进行同步他们在视觉上。

我已经想出如何使用CATransform3DConcat同时旋转2轴但是我不知道如何应用第三轴。

float angleX = -18 * M_PI / 180;
CATransform3D t1 = CATransform3DMakeRotation(angleX, 1, 0, 0);
float angleY = -26 * M_PI / 180;
CATransform3D t2 = CATransform3DMakeRotation(angleY, 0, 1, 0);
CATransform3D combo1 = CATransform3DConcat(t1, t2);
self.labelPlay.layer.transform = combo1;

修改

现在尝试这个,但仍然没有好处。 尝试了不同订单的所有组合,但没有。

float angleX = -18 * M_PI / 180;
CATransform3D t1 = CATransform3DMakeRotation(angleX, 1, 0, 0);
float angleY = -26 * M_PI / 180;
CATransform3D t2 = CATransform3DMakeRotation(angleY, 0, 1, 0);
float angleZ = 8 * M_PI / 180;
CATransform3D t3 = CATransform3DMakeRotation(angleZ, 0, 0, 1);

self.label.layer.transform = CATransform3DConcat(CATransform3DConcat(t3, t2), t1);

1 个答案:

答案 0 :(得分:2)

我不完全确定,但我认为这可能是它。

对于设计师来说,在Illustrator / Photoshop中使用3D旋转角度只能使用CATransform3D,这几乎是正确的,但你可能需要改变一件小事。

假设你的设计工具中有x:-18,y:-26和z:8。将y和z切换为正/负可以解决我的问题。所以我现在 -

float angleX = -18 * M_PI / 180;
CATransform3D t1 = CATransform3DMakeRotation(angleX, 1, 0, 0);
float angleY = 26 * M_PI / 180;
CATransform3D t2 = CATransform3DMakeRotation(angleY, 0, 1, 0);
float angleZ = -8 * M_PI / 180;
CATransform3D t3 = CATransform3DMakeRotation(angleZ, 0, 0, 1);

self.label.layer.transform = CATransform3DConcat(CATransform3DConcat(t1, t2), t3);

我无法确切地告诉你原因,但这可以正常旋转。