我有一个视图及其底层的layer,并且向视图的层添加了一个:
view.layer加法层:转换层;
我添加的层包含各种子层,表示几个三维块的各个侧面。我想应用一个动画到一个图层,以旋转块。
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。
我应该处理块侧子层、转换层、视图层或视图本身的设置以实现我所追求的目标吗?
如有任何指导或指导,将不胜感激。
发布于 2012-06-08 15:26:10
更新:
我终于认识到了这一点,并接受了这样一个事实:我不能使用核心动画来完成这个任务。
我已经走上了用OpenGL解决这个问题的道路。
随着我一点一点地改进,这个问题已经慢慢发展,但是最终的结果是使父层成为保留3D透视图的CATransformLayer,,并旋转它。
至于旋转中心,我使用CATransform3DMakeTranslation来改变图层的位置。
https://stackoverflow.com/questions/10923636
复制相似问题