Animation 如何设置CATTransfermLayer动画旋转中心
我有一个带有底层的视图,我在视图的层中添加了一个CATTransformLayer: [view.layer addSublayer:transformLayer] 我添加的层包含各种各样的子层,代表几个三维块的各个边。我想将动画应用到层以旋转块Animation 如何设置CATTransfermLayer动画旋转中心,animation,ios4,rotation,catransformlayer,Animation,Ios4,Rotation,Catransformlayer,我有一个带有底层的视图,我在视图的层中添加了一个CATTransformLayer: [view.layer addSublayer:transformLayer] 我添加的层包含各种各样的子层,代表几个三维块的各个边。我想将动画应用到层以旋转块 CATransform3D rotation = CATransform3DMakeRotation(deg * M_PI / 180, x, y, z); [CATransaction begin]; [(CATransformLayer
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
我应该为块侧子层、变换层、视图层或视图本身设置混乱,以实现我的目标吗
如有任何指导或指示,将不胜感激。更新:
我终于意识到了这一点,并接受了这样一个事实:我不能使用核心动画来实现这一点
我一直在使用OpenGL解决这个问题
随着我一点一点地改进,这个问题已经慢慢演变,但最终的结果是将父层制作成一个CATTransferMLayer,它保留了3D透视图,并旋转它
至于旋转中心,我使用CATTransformM3dMakeTransflation来更改层的位置。虽然CATTransformM3dMakeTransflation允许我以某种方式旋转层,但它不正确,仍然不会围绕立方体中心旋转。我仍然不知道如何让它发挥作用。一年多来没有人对此发表评论,但我偶然发现了这一点,并认为它可能会帮助试图解决类似问题的人: