2012-03-30 24 views
2

我试图使用Cocoa实现一个像Mac OS X扩展坞中的风扇视图,例如Downloads和Documents文件夹。实现风扇视图 - 可可

我目前在透明窗口的内容视图中添加一个按钮,并使用NSViewAnimation(组动画)对按钮的框架进行动画处理。但动画并没有预期的那么顺利。

是否有任何其他优化的方式来实现?

回答

2

您应该为此使用Core Animation。您应该创建一个足够大的透明视图/窗口来包含整个动画。然后您应该使用CALayer对象来执行实际的动画。

核心动画层本质上是围绕OpenGL表面的高级轻量级包装,层的渲染由GPU完成,比CPU管理的动画(如NSViewAnimation)提供更好的性能。

请记住,因为Core Animation图层是轻量级的,所以它们没有内置任何事件处理,因此您需要在视图/视图控制器中执行所有鼠标跟踪。

您的其他选项是使用图层支持的视图(它们各自具有CALayer)并使用动画代理为动画按钮的位置设置动画。这可能足以实现你想要的功能,并且由于按钮仍然是完整的NSButton对象,它们仍然具有所有的NSView事件处理。

您应该阅读Animation Overview,以便您更好地了解所有这些技术的工作原理。