如何在启动Cocoa应用程序时显示启动画面?

时间:2009-03-26 09:30:38

标签: cocoa splash-screen

我希望在基于Cocoa的应用程序启动时向用户显示启动画面(图片)。这怎么可能?


首先非常感谢。因为我的应用程序运行了一段时间,所以我想在应用程序运行之前显示启动。现在,如果我在里面显示一个带有图像的窗口,那么如何运行该应用程序?如何确保应用程序在启动后显示?如何获得序列?


首先非常感谢你。我在applicationWillFinishLaunching方法中使用orderFront显示窗口,然后在applicationDidFinishLaunching中隐藏它:使用orderOut,现在我发现mainWindow没有显示和app终止,为什么?如何解决这个问题呢?谢谢!

4 个答案:

答案 0 :(得分:11)

尽管彼得的答案最终是正确的(你应该重写你的应用程序以便更快地启动),但有时候这不是一个实用的选择。例如,稍后在应用程序中加载代码可能花费太长时间(例如,数据获取应用程序),迫使其在启动时加载。如果您决定要显示启动画面,最简单的方法是在应用程序委托的applicationWillFinishLaunching:方法中显示它。在应用程序MainMenu.nib中创建一个启动窗口,并为引用该窗口的应用程序委托添加一个插座。然后,您可以将该窗口置于applicationWillFinishLaunching:的屏幕上,并将其隐藏在applicationDidFinishLaunching:中。请注意,主线程的NSRunLoop在此期间不会进行迭代,因此如果要更新启动屏幕(包括状态,进度条等),您需要自己管理这些重绘事件。

再次,想一想长时间启动是否必要。如果是,显示带有progess指示符的启动画面是您欠用户的最低金额。

答案 1 :(得分:6)

为什么你讨厌你的用户?

说真的,不要这样做。不要让您的用户等待使用您的应用。让您的应用快速启动。

(以防你坚持回答:显示一个包含图像的窗口,然后在你感觉用户等待足够长时间时隐藏窗口。)

答案 2 :(得分:0)

只需在图像上放置一个窗口,然后在完成启动初始化后将其关闭。

答案 3 :(得分:0)

Barry上面的回答似乎不适用于基于文档的应用程序。在applicationWillFinishLaunching:内显示启动窗口会干扰应用程序的启动顺序,从而不会创建文档窗口。我上传了一个示例项目here。在applicationWillFinishLaunching:中,注释掉[_splashWindow orderFront:self ],文档窗口会出现。