2

我正在 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)

4

1 回答 1

4

为了:

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

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

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

于 2013-10-17T21:54:04.717 回答