В последних версиях XCode и Mac OS X кнопки окон - закрыть, свернуть и масштабировать перешли на виджеты тем, и их настройки окон должны - начиная с Yosemite, через NSTitlebarAccessoryViewController.
I'mпытаюсь перейти от пользовательских NSButtons - я использую суть из icodeforlove - WindowButtonBar.swift , которую я настроил для утилиты NSPanel - PanelButtonbar, которую я загружаю следующим образом в панеликонтроллер:
var hoverBar : PanelButtonBar?
var accessoryViewController : NSTitlebarAccessoryViewController?
override func windowDidLoad() {
// decide where to place the hover bar
if let window = self.window, window.responds(to: #selector(NSWindow.addTitlebarAccessoryViewController(_:))) {
guard self.accessoryViewController == nil else { return }
let accessoryViewController = NSTitlebarAccessoryViewController()
self.accessoryViewController = accessoryViewController
hoverBar = PanelButtonBar.init(frame: NSMakeRect(0, 0, 80, 19))
accessoryViewController.view = hoverBar!
accessoryViewController.layoutAttribute = .left
window.addTitlebarAccessoryViewController(accessoryViewController)
}
else
{
hoverBar = PanelButtonBar.init(frame: NSMakeRect(5, 3, 80, 19))
self.titleView?.superview?.addSubview(hoverBar!)
}
// we want our own hover bar of buttons (no mini, conditional zoom)
// but reuse the close widget's target action setup
if let panelButton = hoverBar!.closeButton, let windowButton = window?.standardWindowButton(.closeButton) {
panelButton.target = windowButton.target
panelButton.action = windowButton.action
}
panel.standardWindowButton(.closeButton)?.removeFromSuperview()
}
, который загружается нормально, но пользовательский интерфейс выключен - слишком далеко вправо и слишком низко:
Похоже, что оригинальный виджет закрытия смещает панель наведения, которую я намеревался расположить .left
для наложения, как и раньше, но ни скрытие, ни удаление виджета закрытия, похоже, не влияют на макет.
Возможно, я собираюсьвсе это неправильно, но я бы хотел, чтобы у меня было такое поведение, как раньше.