一直觉得CodeBox的窗口呈现动画很帅气--就是窗口Bounce了一下的那个效果。对了,就是NSAlert在OSX Lion下的显示的时候那个动画。我一直试图复刻那个动画,但是每次都灰头土脸的结束各种尝试。
今天搜索网络,在StackOverflow上找到了答案--事实上,我曾经多次无限接近正确答案,但最终还是没有成功。
答案实际上很简单:设置NSWindow对象的animationBehavior:为NSWindowAnimationBehaviorAlertPanel。
但是为啥我曾经这么设置,却一直没有成功呢?因为我一直用的非Document Based Application模版做的测试!
在Document Based Application模版下,直接在Interface Builder里,设置窗口的Animation为Alert Style,就直接达成了CodeBox的窗口呈现动画了,一行代码都不用写。但是对于非Document Based Application,你需要做一点点工作才行。
首先,在Interface Builder里设置Animation为Alert Style,然后,取消Visible At Launch前面的选择。如下图:
然后,在
-applicationDidFinishLaunching:方法中,加入如下代码:
dispatch_async(dispatch_get_main_queue(), ^{
[self.window makeKeyAndOrderFront:nil];
});
编译,执行。Boom!窗口动画就出来了!注意了,这个动画只有OS X Lion及更新版本上可以使用。虽然我走了很多弯路,但是最终还是成功找到解决方法,一方面,显示了自己有多么无知,但是最终解决问题,也总算有一丝安慰。
本文详细记录了一次尝试复刻OS X Lion窗口动画的过程,从失败到成功,揭示了在非DocumentBasedApplication模板下实现动画的关键步骤。包括设置窗口动画行为为AlertPanel以及在applicationDidFinishLaunching方法中的额外代码调用。

1498

被折叠的 条评论
为什么被折叠?



