0

我正在开发我的菜单栏应用程序并使 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
    }

}
4

0 回答 0