首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置CATransformLayer动画旋转中心

如何设置CATransformLayer动画旋转中心
EN

Stack Overflow用户
提问于 2012-06-06 23:17:47
回答 1查看 519关注 0票数 1

我有一个视图及其底层的layer,并且向视图的层添加了一个

view.layer加法层:转换层;

我添加的层包含各种子层,表示几个三维块的各个侧面。我想应用一个动画到一个图层,以旋转块。

代码语言:javascript
复制
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];

问题是,该层大约是围绕着前面的角旋转,而不是在立方体的中心旋转(例如,见下文)。

代码语言:javascript
复制
                    / \                  / \        
   / \            / \ / \              / \ / \      
 / \ / \         |\ / \ /|            |\ / \ /|     
|\ / \ /|        | |\ /| |            | |\ /| |     
| |\ /| |         \| | |/ \    OR    / \| | |/      
|\| | |/|  ==>      \|/ \ / \      / \ / \|/        
|1|\|/|B|            |\ / \ /|    |\ /   /|         
 \|2|A|/             |A|\ /| |    | |\ /|2|         
   \|/                \|B| |/      \| |1|/          
                        \|/          \|/            

A/B标签应移至1/2职位,或1/2应移至A/B,视轮换方向而定。相反,它改变了第一个图形,大致旋转在前面的角落,导致一些接近其他图形。上面未标记的块处于不同的视图和静态中,因此不属于旋转的一部分。较低的标记块在视图/图层中,我正在尝试动画。

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

我已经处理了anchorPoint,zPosition、anchorPointZ等不同层,但都没有成功。也尝试过setSublayerTransform,setTransform。

我应该处理块侧子层、转换层、视图层或视图本身的设置以实现我所追求的目标吗?

如有任何指导或指导,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-08 15:26:10

更新:

我终于认识到了这一点,并接受了这样一个事实:我不能使用核心动画来完成这个任务。

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

随着我一点一点地改进,这个问题已经慢慢发展,但是最终的结果是使父层成为保留3D透视图的CATransformLayer,,并旋转它。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10923636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档