我希望在基于Cocoa的应用程序启动时向用户显示启动画面(图片)。这怎么可能?
首先非常感谢。因为我的应用程序运行了一段时间,所以我想在应用程序运行之前显示启动。现在,如果我在里面显示一个带有图像的窗口,那么如何运行该应用程序?如何确保应用程序在启动后显示?如何获得序列?
首先非常感谢你。我在applicationWillFinishLaunching方法中使用orderFront显示窗口,然后在applicationDidFinishLaunching中隐藏它:使用orderOut,现在我发现mainWindow没有显示和app终止,为什么?如何解决这个问题呢?谢谢!
答案 0 :(得分:11)
尽管彼得的答案最终是正确的(你应该重写你的应用程序以便更快地启动),但有时候这不是一个实用的选择。例如,稍后在应用程序中加载代码可能花费太长时间(例如,数据获取应用程序),迫使其在启动时加载。如果您决定要显示启动画面,最简单的方法是在应用程序委托的applicationWillFinishLaunching:
方法中显示它。在应用程序MainMenu.nib中创建一个启动窗口,并为引用该窗口的应用程序委托添加一个插座。然后,您可以将该窗口置于applicationWillFinishLaunching:
的屏幕上,并将其隐藏在applicationDidFinishLaunching:
中。请注意,主线程的NSRunLoop在此期间不会进行迭代,因此如果要更新启动屏幕(包括状态,进度条等),您需要自己管理这些重绘事件。
再次,想一想长时间启动是否必要。如果是,显示带有progess指示符的启动画面是您欠用户的最低金额。
答案 1 :(得分:6)
为什么你讨厌你的用户?
说真的,不要这样做。不要让您的用户等待使用您的应用。让您的应用快速启动。
(以防你坚持回答:显示一个包含图像的窗口,然后在你感觉用户等待足够长时间时隐藏窗口。)
答案 2 :(得分:0)
只需在图像上放置一个窗口,然后在完成启动初始化后将其关闭。
答案 3 :(得分:0)
Barry上面的回答似乎不适用于基于文档的应用程序。在applicationWillFinishLaunching:
内显示启动窗口会干扰应用程序的启动顺序,从而不会创建文档窗口。我上传了一个示例项目here。在applicationWillFinishLaunching:
中,注释掉[_splashWindow orderFront:self ]
,文档窗口会出现。