如何围绕任意点使用Core Animation旋转图层? (在我的例子中,一个点不在我想要旋转的层内)
我更喜欢这样做而不改变锚点,因为除非我每次更改锚点时出错,否则它也会改变图层的位置。
我尝试了类似的东西,但它不起作用:
[UIImageView beginAnimations:nil context:nil];
CATransform3D rotationTransform = CATransform3DIdentity;
rotationTransform = CATransform3DTranslate(rotationTransform, 0.0, -100.0, 0.0);
rotationTransform = CATransform3DRotate(rotationTransform, DegreesToRadians(180),
0.0, 0.0, 1.0);
rotationTransform = CATransform3DTranslate(rotationTransform, 0.0, 100.0, 0.0)
shape1.layer.transform = rotationTransform;
[UIImageView commitAnimations];
看起来旋转轴在旋转期间正在移动。
答案 0 :(得分:3)
您的解决方案很好但“预期方式”是使用锚点。
当您设置锚点时,它正在移动,因为该位置附加到锚点,即设置anchorPoint位于超级层坐标系中的位置集。
可能不值得改变,因为你有一些工作,但下次还要添加灰色物质。
祝你好运!答案 1 :(得分:2)
您可以通过附加多个转换来完成此操作:
答案 2 :(得分:1)
您的初始解决方案并不正常,因为翻译的动画就像旋转一样。因此,旋转过程中旋转的“自定义中心”正在移动。你真正想要的是没有动画的翻译和基于非动画翻译的动画旋转。 事实上,我目前有完全相同的问题,但还没有找到解决方案。我现在正在关注CATransaction,希望这可能是关键......
答案 3 :(得分:0)
我最终通过创建一个新的更大的图层来完成它,它的中心位于我的旋转轴上,并设置我想要旋转的图层作为它的子图层。
然后我旋转更大的层而不是子层