Я хочу создать пользовательскую панель инструментов Window, но без использования реального NSToolbar (потому что в некоторых случаях он не работает правильно в моих случаях, и я не могу его стилизовать так, как я хочу), поэтому Мне нужно добавить subview в заголовок окна. Он должен выглядеть следующим образом: Добавить Subview в NSWindow Titlebar
А Возможного путь будет:
[[[_window contentView] superview] addSubview:_titlebarView];
но есть проблема, что он вызывает предупреждение о Йосемити (NSWindow warning: adding an unknown subview: <NSView: 0x608000122b20>
), так что это, кажется, не будет правильный способ сделать это.
В настоящее время я добавляю вид панели инструментов для представления Titlebar:
[[[_window standardWindowButton:NSWindowCloseButton]
superview] addSubview:_titlebarView];
но чувствует себя тоже неправильно.
Поскольку мое приложение только цели OS X 10,10 (Yosemite) было бы хорошо для меня, чтобы использовать Йосемити-только API, так что я имел взгляд на NSTitlebarAccessoryViewController
и мне удалось успешно подкласс и использовать его с NSWindow
«s addTitlebarAccessoryViewController:
метод. При таком подходе остается одна проблема, возможные значения для layoutAttribute
являются:
NSLayoutAttributeBottom
Добавляет вид в нижней части заголовка окна, сохраняя при этом высоту вида.NSLayoutAttributeRight
Добавляет вид справа от окна заголовка окна, обрезая вид на высоту заголовок.
NSLayoutAttributeBottom
не подходит для меня, так как мне нужно расположить вещи правильно в верхней части заголовка окна (см скриншот выше) и центр светофоре. NSLayoutAttributeRight
будет именно то, что мне нужно, но я не могу найти способ увеличить высоту заголовка, поэтому представление обрезается до высоты заголовка, что делает его бесполезным для меня. (Примечание. Использование текстурированного окна и изменение границы содержимого не работает, поскольку оно не изменит фактическую высоту заголовка)
Каков рекомендуемый способ для этого? Я бы предпочел пойти с официальными API и использовать подход AccessoryViewController, если бы было возможно, чтобы представление было больше, чем панель заголовков по умолчанию.
Arrgh! Это также подтачивает меня ... – SevenBits
FYI, вы все равно можете использовать тот подход, который используете в настоящее время ... но он просто генерирует предупреждение. – SevenBits
@SevenBits Я знаю, что я могу его использовать, но в примечаниях к выпуску была ясная заметка: «Приложения, выполняющие это, должны будут устранить эту проблему, так как это предотвратит правильную работу новых функций на 10.10». [Mac OS X Developer Release Note] (https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/) – ePirat