我希望能够添加一个按钮标题栏 https://developer.apple.com/design/human-interface-guidelines/macos/windows-and-views/window-anatomy/ of Mac 上打开的所有窗口.
该按钮将位于右侧,与X - +
纽扣。
这是关于 windows 的询问my app here:
如何在 Interface Builder 中创建 Yosemite 风格的统一工具栏? https://stackoverflow.com/questions/24023000/how-can-i-create-yosemite-style-unified-toolbar-in-interface-builder
但我希望按钮出现在Mac 上打开的任何应用程序的所有窗口。显然,只有在用户安装了该程序后才会发生这种情况。
我知道这本质上是“插入”操作系统的用户界面,但我看到其他应用程序这样做,这让我觉得这是可行的。
这是我想要按钮的屏幕截图:
在 OS X 10.10 (Yosemite) 及更高版本中添加标题栏按钮的官方支持方法是创建一个NSTitlebarAccessoryViewController https://developer.apple.com/library/mac/documentation/AppKit/Reference/NSTitlebarAccessoryViewController_Class/并将其添加到您的窗口中使用-[NSWindow addTitlebarAccessoryViewController] https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/#//apple_ref/occ/instm/NSWindow/addTitlebarAccessoryViewController:.
例如,我有一个带有标题栏附件视图的窗口:
为了进行设置,我首先向故事板中的窗口控制器场景添加一个独立视图。 (你不必使用故事板,但我在这个项目中使用了。)
我的附件视图是NSView
与NSButton
子视图。按钮标题使用 Font Awesome 来显示图钉。
我将附件视图连接到一个插座(巧妙地命名为accessoryView
) in my NSWindowController
子类:
然后,在我的窗口控制器中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)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)