gpt4 book ai didi

objective-c - OSX Cocoa 应用程序中的启动屏幕

转载 作者:行者123 更新时间:2023-12-03 16:28:41 26 4
gpt4 key购买 nike

我正在 Xcode 中开发 Cocoa 应用程序。

我想使用 .png 文件作为启动屏幕中的图像内容来创建启动屏幕。

我已经完成了以下任务:

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

来 self 的类(class):

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. 使用 NSWindow 的 zwindow level 属性 并使启动窗口 float

  2. 使窗口不透明(需要无边框窗口),因此请在 Google 上查找有关如何制作此类窗口类型的教程

  3. 并且 4. sleep 实际上可以预防这些事情。对于 3,您需要在图像上使用 mouseDown,对于 4,您需要一个计时器 ==> 两者都是事件。当您休眠主线程时,不会调度事件。 NSRunLoop 必须正在运行。一种方法是使用 NSRunloop runUntilDate 调用而不是 sleep

关于objective-c - OSX Cocoa 应用程序中的启动屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19437580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com