swift - 你如何显示 NSStatusBar 项目并隐藏停靠栏图标?

标签 swift xcode macos user-interface cocoa

我试过将“Application is Agent”设置为 1,但状态栏项目消失了。当设置为 0 时,状态栏项目和停靠图标都会显示。如何显示状态栏项目但隐藏停靠栏图标?

我在 AppDelegate.swiftawakeFromNib()applicationDidFinishLaunching() 中尝试了以下操作:

//class scope    
let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)

//function scope    
self.statusItem.image = NSImage(named: "myImage")
let menu = NSMenu(title: "MyApp-Menu")
let menuItem = NSMenuItem(title: "title", action: nil, keyEquivalent: "")
menu.addItem(menuItem)
self.statusItem.menu = menu

最佳答案

针对 Mac OS 10.14 更新

在 AppDelegate 中:

let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength)

func applicationDidFinishLaunching(_ aNotification: Notification) {
    if let button = statusItem.button {
        button.image = NSImage(named:NSImage.Name("StatusBarButtonImage"))
        button.action = #selector(launchFromTray)
    }
    constructMenu()
}

func constructMenu() {
    let menu = NSMenu()
    menu.addItem(NSMenuItem.separator())
    menu.addItem(NSMenuItem(title: "Show", action: #selector(launchFromTray), keyEquivalent: "w"))
    menu.addItem(NSMenuItem(title: "Quit", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))

    statusItem.menu = menu
}

现在您应该将 Application is agent (UIElement) 设置为 YES。应该工作正常,希望这会对某人有所帮助

关于swift - 你如何显示 NSStatusBar 项目并隐藏停靠栏图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45291536/

相关文章:

objective-c - 进行连续循环以从 iTunes 获取信息的最佳方式是什么?

objective-c - 将 NSLocalizedRecoveryOptionsErrorKey 设置为 NSError UserInfo 不提供任何恢复选项

ios - 在 Swift4 上通过键盘隐藏时如何滚动 UITextField?

ios - 如何根据 JSON 数组中的字段对表格 View 单元格进行分组

ios - 更改应用程序商店上的应用程序的包 ID、应用程序 ID 和应用程序名称有什么影响

ios - 变量已写入,但从未读取过?

ios - 使用 Parse 查询指针属性

swift - AVFoundation 自定义视频播放器不显示视频?

iphone - iOS - 如何在处理该单元格中的按钮事件时访问自定义单元格?

macos - CGImage.裁剪(到:) is flipped on OS X