我有一个带有它的底层的视图,我在视图的层中添加了一个CATransformLayer:
[view.layer addSublayer:transformLayer];
我添加的图层包含代表几个 3 维块的各个侧面的各种子图层。我想将动画应用于图层以旋转块。
CATransform3D rotation = CATransform3DMakeRotation(deg * M_PI / 180, x, y, z);
[CATransaction begin];
[(CATransformLayer *)[pView.layer.sublayers objectAtIndex:0] setSublayerTransform:rotation];
or (both seem to produce the same result)
[(CATransformLayer *)[pView.layer.sublayers objectAtIndex:0] setTransform:rotation];
[CATransaction commit];
问题是图层大致围绕前角而不是立方体的中心旋转(例如,见下文)。
/ \ / \
/ \ / \ / \ / \ / \
/ \ / \ |\ / \ /| |\ / \ /|
|\ / \ /| | |\ /| | | |\ /| |
| |\ /| | \| | |/ \ OR / \| | |/
|\| | |/| ==> \|/ \ / \ / \ / \|/
|1|\|/|B| |\ / \ /| |\ / /|
\|2|A|/ |A|\ /| | | |\ /|2|
\|/ \|B| |/ \| |1|/
\|/ \|/
A/B 标签应移至 1/2 位置,或 1/2 应移至 A/B,具体取决于旋转方向。相反,它从第一个图形改变,大致围绕前角旋转,导致与其他图形接近。上部未标记的块处于不同的视图中并且是静态的,因此不是旋转的一部分。较低标记的块位于我要设置动画的视图/图层中。
如何更改旋转中心以达到我想要的结果?
我已经为各个层弄乱了anchorPoint、zPosition、anchorPointZ,但没有成功。也尝试过setSublayerTransform,setTransform。
我应该弄乱块侧子层、变换层、视图层或视图本身的设置来实现我所追求的吗?
任何指导或方向将不胜感激。