我希望能够向 title bar 添加一个按钮在 Mac 上打开的所有窗口。
该按钮位于右侧,与 X - +
按钮相对。
此处询问有关我的应用程序的窗口:
How can I create Yosemite-style unified toolbar in Interface Builder?
但我希望该按钮出现在 Mac 上打开的任何应用程序的所有窗口上。显然,只有在用户安装了该程序后才会发生这种情况。
我知道这本质上是“插入”操作系统的 UI,但我看到其他应用程序这样做,这让我觉得这是可行的。
这是我想要按钮的屏幕截图:
最佳答案
在 OS X 10.10 (Yosemite) 及更高版本中添加标题栏按钮的官方支持方法是创建 NSTitlebarAccessoryViewController
并使用 -[NSWindow addTitlebarAccessoryViewController]
将其添加到您的窗口中.
例如,我有一个带有标题栏附件 View 的窗口:
为了进行设置,我首先向 Storyboard中的窗口 Controller 场景添加一个独立 View 。 (您不必使用 Storyboard,但我在这个项目中使用了。)
我的附件 View 是一个带有 NSButton
subview 的 NSView
。按钮标题使用 Font Awesome 来显示图钉。
我将附件 View 连接到我的 NSWindowController
子类中的 socket (巧妙地命名为 accessoryView
):
然后,在窗口 Controller 的 windowDidLoad
中,创建 NSTitlebarAccessoryViewController
,设置其属性,并将其添加到窗口:
@IBOutlet var accessoryView: NSView!
var accessoryViewController: NSTitlebarAccessoryViewController?
override func windowDidLoad() {
super.windowDidLoad()
createAccessoryViewControllerIfNeeded()
}
fileprivate func createAccessoryViewControllerIfNeeded() {
guard self.accessoryViewController == nil else { return }
let accessoryViewController = NSTitlebarAccessoryViewController()
self.accessoryViewController = accessoryViewController
accessoryViewController.view = accessoryView
accessoryViewController.layoutAttribute = .right
self.window?.addTitlebarAccessoryViewController(accessoryViewController)
}
关于xcode - 在系统范围内向 Mac 窗口标题栏添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955676/