首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >App上线前,为什么闪屏窗口无法显示?

App上线前,为什么闪屏窗口无法显示?
EN

Stack Overflow用户
提问于 2009-04-01 01:45:22
回答 2查看 603关注 0票数 0

我想在App午餐之前显示一个闪屏。首先,我让SplashWindow成为NSWindow的子类,代码是:

代码语言:javascript
复制
- (id)initWithContentRect(NSRect)contentRect 
styleMask(unsigned int)aStyle 
backing(NSBackingStoreType)bufferingType 
defer(BOOL)flag {

self = [super initWithContentRect:contentRect
styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; 
[self setBackgroundColor: 
[NSColor clearColor]]; 
[self setLevel: NSStatusWindowLevel]; 
[self setAlphaValue:1.0]; 
[self setOpaque:NO]; 
[self setHasShadow: YES]; 
return self;

}

然后在主应用控制器中从nib唤醒:

代码语言:javascript
复制
loadWindow = [[NSWindow alloc] initWithContentRect:[loadWindow frame] styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]; 
[loadWindow setContentView:theView]; 
[loadWindow setHasShadow:YES]; [
loadWindow setLevel:NSStatusWindowLevel]; 
[loadWindow makeKeyAndOrderFront:self];

然后我让loadWindow在3秒后关闭,我使用了方法loadWindow orderOut:self,但是当启动窗口关闭时,主控窗口没有显示。我遗漏了什么?我的应用程序是一个multi_Documents。在mainMenu.nib中有一个窗口(加载窗口),在IB中,我已经连接了主控制器中的loadWindow插座。我还连接了视图和图像。我改变了另一种方式:在委托方法中:applicationWillFinishLaunching:I orderFront loadWindow,在方法:applicationDidFinishLaunching:3秒后我orderOut了loadWindow,但mainWindow没有显示too.Somebody可以给出一些建议或编码结果问题吗?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-01 05:23:13

标题的答案:因为你的应用程序还没有运行。一个没有运行的应用程序不能做任何事情。

对问题的认真回答:

首先,你不需要继承NSWindow的子类。

其次,您没有实例化您的子类,而是实例化NSWindow。这就是为什么你没有得到你的子类的行为。(这就是您应该做的,因为您不需要这个子类。)

第三,您试图向一个尚不存在的窗口请求用于创建它的框架。loadWindownil,直到你创建了一些东西并将它存储在那里。

第四,因为您正在向nil请求它的框架,所以您将得到一个垃圾矩形。然后用这个垃圾矩形创建一个窗口。不出所料,当您将此窗口放在屏幕上时,它会出现在一个随机位置(可能在屏幕外),大小随机(可能太大而无法创建或为负数)。

第五,是什么让你认为告诉一个窗口去订购会导致另一个窗口去订购?它怎么知道在哪个窗口点餐呢?

抛开the very existence of a splash screen punishes the user for using your application这一不可否认的事实不谈,你应该使用NSWindowController来加载窗口和进行设置,比如setBackgroundColor:setLevel:。在您的timer方法中,您必须在主窗口中显式地对启动窗口进行排序。

票数 3
EN

Stack Overflow用户

发布于 2009-04-01 02:16:09

在你发布的代码中,我看不到任何可以让窗口显示的东西。为什么你不试着发送你的主窗口makeKeyAndOrderFront:?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/703744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档