我首先在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);
答案 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);
我无法确切地告诉你原因,但这可以正常旋转。