OSX Cocoa app中的启动画面

时间:2013-10-17 21:24:33

标签: objective-c macos cocoa

我正在使用Xcode中的Cocoa应用程序。

我想使用.png文件创建一个启动画面作为启动画面中的图像内容。

我完成了以下工作:

  • 启动应用程序时,启动画面显示2秒
  • 初始屏幕显示在屏幕中央
  • 用户无法最小化,移动或调整启动画面

来自我的班级:

IBOutlet NSView *customView;
IBOutlet NSImageView *splashScreen;
IBOutlet NSWindow *splashWindow;

这是我到目前为止在awakeFromNib中所拥有的内容

NSRect rect = NSMakeRect(0,0,421,231);
splashScreen = [[NSImageView alloc] initWithFrame:rect];
[splashScreen setImageScaling:NSScaleToFit];
[splashScreen setImage:[NSImage imageNamed:@"splash.png"]];
[customView addSubview:splashScreen];

CGFloat xPos = NSWidth([[splashWindow screen] frame])/2 - NSWidth([splashWindow frame])/2;
CGFloat yPos = NSHeight([[splashWindow screen] frame])/2 - NSHeight([splashWindow frame])/2;
[splashWindow setFrame:NSMakeRect(xPos, yPos, NSWidth([splashWindow frame]), NSHeight([splashWindow frame])) display:YES];

然后在applicationDidFinishLaunching:

sleep(2); /* Yeah. I know this is bad. No need to comment on that */
[splashWindow close];

问题:

  1. 如何将启动图像带到桌面上每个打开的窗口的正面?

  2. PNG是一个矩形,但图像角落附近的微小区域应该是透明的。然而......透明的斑点只是显示为白色......我该如何解决?

  3. 如果用户在图片自动关闭之前点击图片,如何实现关闭图片的功能?

  4. 如何设置计时器以在2-3秒后关闭窗口? (的NSTimer)

1 个答案:

答案 0 :(得分:4)

有:

  1. 使用zwindow level property of NSWindow并使启动窗口浮动

  2. 使窗口不透明(需要无边框窗口)以便google获取有关如何制作此类窗口类型的教程

  3. AND 4.睡觉实际上是在防止事情发生。对于3,你需要在图像上使用mouseDown,对于4个计时器==>两者都是事件。睡眠主线程时不调度事件。 NSRunLoop必须正在运行。一种方法是NSRunloop runUntilDate调用而不是睡眠