【问题标题】:How do I set CATransformLayer animation center of rotation如何设置 CATransformLayer 动画旋转中心
【发布时间】:2012-06-06 23:17:47
【问题描述】:

我有一个 view 及其底层 layer,我将 CATransformLayer 添加到 view 的层:

[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,具体取决于旋转方向。相反,它从第一个图形发生变化,大致围绕前角旋转,导致与其他图形接近。上部未标记的块处于不同的视图中并且是静态的,因此不是旋转的一部分。较低标记的块位于我要设置动画的视图/层中。

如何更改旋转中心以达到我想要的效果?

我已经为各个层弄乱了 anchorPointzPositionanchorPointZ,但没有成功。 setSublayerTransformsetTransform也试过了。

我应该弄乱块侧子层、变换层、视图层或视图本身的设置来实现我所追求的吗?

任何指导或方向将不胜感激。

【问题讨论】:

  • 一年多没有人对此发表评论,但我偶然发现了这一点,并认为它可能会帮助试图解决类似问题的人:tumbljack.com/post/176535888/…

标签: animation ios4 rotation catransformlayer


【解决方案1】:

更新:

我终于意识到并接受了使用 Core Animation 无法做到这一点的事实。

我已经走上了使用 OpenGL 解决这个问题的道路。


这个问题随着我一点一点的改进而慢慢演变,但最终的结果是把父层变成一个CATransformLayer,它保留了3D透视图,然后旋转它。

至于旋转中心,我使用 CATransform3DMakeTranslation 来改变图层的位置。

【讨论】:

  • 虽然 CATransform3DMakeTranslation 允许我以某种方式旋转图层,但它是不正确的,并且仍然不会围绕立方体的中心旋转。仍然不知道如何让它工作。
猜你喜欢
  • 2015-11-05
  • 2021-04-02
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2013-02-12
  • 2022-11-08
  • 2013-07-22
  • 2013-01-28
相关资源
最近更新 更多