NSStatusItem未显示在菜单栏中

时间:2018-05-28 17:06:24

标签: swift xcode cocoa nsstatusitem nsstatusbar

我正在使用我的菜单栏应用程序并使NSStatusBarButton看起来像我想要的。然后我稍微重新构建了代码,并且在运行它之后突然没有任何编译器错误/警告,按钮不再显示在菜单栏中。

我已经检查了两次代码但是我没有找到它改变其行为的原因。现在好奇的部分是,如果我继续复制将我的代码粘贴到新创建的可可应用程序项目中,它再次正常工作。跆拳道?我是否以某种方式弄乱了我的项目设置?但那不可能。我实际上只是将从applicationDidFinishLaunching方法中绘制按钮图像的代码放到我称为initStatusBarImage()的单独的代码中,并从applicationDidFinishLaunching调用它。然后它突然没有显示状态栏项,我撤消代码更改,运行它仍然无法正常工作。我错过了重要的事吗?这是我所描述的问题的示例代码。是的,图像在我的资产文件夹中,这不是问题

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

let sItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.variableLength)

func applicationDidFinishLaunching(_ aNotification: Notification) {
    let img1 = NSImage(named:NSImage.Name("progressbar-15"))
    let img2 = NSImage(named:NSImage.Name("progressbar-15"))
    let img3 = NSImage(size: NSSize(width: 20, height: 18))
    img3.lockFocus()
    img1?.draw(at: NSPoint(x: 0, y: 0), from: NSZeroRect, operation: NSCompositingOperation.sourceOver, fraction: 1.0)
    img2?.draw(at: NSPoint(x: 10, y: 0), from: NSZeroRect, operation: NSCompositingOperation.sourceOver, fraction: 1.0)
    img3.unlockFocus()
    if let but = sItem.button {
        but.image = img3
    }
}

func applicationWillTerminate(_ aNotification: Notification) {
    // Insert code here to tear down your application
}

}

0 个答案:

没有答案