我在获取CoreAnimation旋转关于其中心点的NSView时遇到了一些麻烦。我想要做的就是旋转一个NSView,同时保持其中心点静止,以便该对象看起来在原地旋转。CoreAnimation setFrameCenterRotation不能正确动画
我选择这样做的方式涉及在NSView中使用animator
属性。代码如下:
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0];
[[view animator] setFrameCenterRotation:45.0];
[NSAnimationContext endGrouping];
哪里view
的是,我想旋转的NSView。这段代码的结果使得对象在某种程度上突然向右移动,然后进行旋转。最终的结果是正确的,但由于它在一开始就进行了移动,所以动画看起来不正确。我假设这是因为setFrameCenterRotation:
的工作原理是它首先将帧原点转移到视图的中心点,然后进行旋转。
我在这里做错了什么?有没有更好的方法来旋转关于中心的NSView?非常感谢!
感谢您的回答,但似乎我有另一个问题。该层的anchorPoint肯定是问题的根源,但不应该(0.5,0.5)默认?它在苹果的文档中如此明确地表示。无论如何,我的问题现在发生在我有一个'NSViewAnimation'与旋转动画同时运行的时候。当NSViewAnimation同时运行时,设置锚点什么也不做!但是当我不运行NSViewAnimation时,它工作正常。任何想法为什么可能会发生? – zanneth 2011-03-27 23:27:00
谢谢@Zanneth!我遇到了类似的问题,您的评论给我提供了解决问题的必要线索。我正在旋转imageView的根层。其anchorPoint按照标准坐标方向在0,0,左下方读出。我可以将它设置为.5,.5,但它会被忽略,就像你经历过的一样。移动图像和动画到子图层解决了我的问题。显然,每当一个视图或其根层动画时,就会敲掉anchorPoint。希望你能够在你的项目中解决这个问题。 – Wienke 2011-04-17 14:33:50
如何将动画移动到“子图层”?我可以将定位点设置为0.5,但是然后视图突然'跳'到0,0原点,但与其中心一起。 – strange 2012-07-03 22:15:52