主窗口并非总是在applicationDidFinishLaunching中初始化

时间:2018-10-04 09:09:51

标签: swift macos nsapplication-delegate

我在应用程序委托中为我的应用程序主窗口设置背景图片:

func applicationDidFinishLaunching(_ aNotification: Notification) {

    if let mw = NSApplication.shared.mainWindow {
        mw.isMovableByWindowBackground = true

        mw.backgroundColor = NSColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1.0)

        if let cv = mw.contentView {
            cv.wantsLayer = true
            let image = NSImage(named: NSImage.Name(rawValue: "bkg"))
            cv.layer!.contents = image
        }
        else {
            print("Content view is not initialized yet")
        }
    }
    else {
        print("Main window is not initialized yet")
    }
}

但是,偶尔我看到mainWindow返回nil。所以我猜applicationDidFinishLaunching不是放置我的代码的最佳位置。另外有时我会注意到在应用午餐期间,默认背景在眨眼间出现,然后应用了背景图像。

在哪里放置我的代码以应用背景图像的最佳位置?

0 个答案:

没有答案