9

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


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


首先非常感谢。我在applicationWillFinishLaunching方法中使用orderFront显示窗口,然后在applicationDidFinishLaunching中隐藏它:使用orderOut,现在我发现mainWindow不显示并且应用程序终止,为什么?如何解决这个问题?谢谢!

4

4 回答 4

12

尽管彼得的回答最终是正确的(您应该重写您的应用程序以更快地启动),但有时这不是一个实际的选择。例如,稍后在应用程序中加载代码可能需要很长时间(例如数据采集应用程序),迫使它在启动时加载。如果您决定要显示初始屏幕,最简单的方法是在应用程序委托的applicationWillFinishLaunching:方法中显示它。在您的应用程序 MainMenu.nib 中创建一个启动窗口,并向引用该窗口的应用程序委托添加一个出口。然后,您可以将窗口放在屏幕上applicationWillFinishLaunching:并将其隐藏applicationDidFinishLaunching:. 请注意,主线程的 NSRunLoop 在此期间不会迭代,因此如果您想更新启动屏幕(带有状态、进度条等),您需要自己管理这些重绘事件。

再次,认真思考是否需要长时间的启动。如果是这样,显示带有进度指示器的初始屏幕是您欠用户的最低限度。

于 2009-03-26T16:42:39.253 回答
6

你为什么讨厌你的用户?

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

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

于 2009-03-26T11:15:34.313 回答
0

只需放置一个带有图像的窗口并在完成启动初始化后将其关闭。

于 2009-03-26T14:36:06.233 回答
0

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

于 2011-03-29T17:06:09.857 回答