我在让CoreAnimation围绕其中心点旋转NSView时遇到了一些麻烦。我想要做的就是旋转NSView,同时保持其中心点静止,以便对象看起来在适当的位置旋转。
我选择这样做的方法涉及在NSView中使用animator
属性。代码如下:
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0];
[[view animator] setFrameCenterRotation:45.0];
[NSAnimationContext endGrouping];
view
是我试图旋转的NSView。此代码的结果使对象突然向右移动,然后进行旋转。最终结果是正确的,但动画看起来不正确,因为它在开始时所做的运动。我假设这是因为setFrameCenterRotation:
的工作方式是首先将帧原点移动到视图的中心点,然后进行旋转。
我在这里做错了什么?是否有更好的方法可以围绕中心旋转NSView?非常感谢!
答案 0 :(得分:0)
首先确保支持NSView层(启用核心动画),动画师代理否则将在没有CA的情况下进行动画处理。使用-setWantsLayer:YES,或通过在IB中检查该视图的相应选项来执行此操作。
其次,将图层锚点设置为0.5,0.5:
view.layer.anchorPoint = CGPointMake(0.5,0.5);
第三,如果你不能得到你想要的东西,你可能需要直接的层交互,但首先尝试使用AppKit API,因为它会保留鼠标事件等。