2016-09-20 2 views
0

Я хочу иметь окно со скрытым названием, как показано в Safari или Xcode, но используя вид аксессуара заголовка вместо панели инструментов (я хочу больше контролировать расположение и содержимое, чем панель инструментов обеспечивает). Это выполнимо?Скрытое название окна с дополнительным видом

Я не смог заставить его работать. Если я установил titleVisibility моего окна hidden, а мой аксессуар layoutAttribute будет bottom, тогда область заголовка пуста, за исключением стандартных кнопок закрытия/минимизации/масштабирования, и после этого появится вид аксессуаров.

Если я меняю layoutAttribute на right, то мой аксессуар выглядит справа от стандартных кнопок, где я хочу, но нижняя часть обрезана, потому что строка заголовка недостаточно высока, а вид также не отображается Не изменяйте размер горизонтально с окном.

Есть ли способ сделать эту работу? Или мне нужно использовать панель инструментов?

Обновление: Я использовал визуальный отладчик Xcode для проверки собственной строки заголовка Xcode и обнаружил, что он использует панель инструментов. Отладчик отказывается присоединяться к Safari, поэтому мне не интересно, как это делает новая кнопка вкладки. Я полагаю, что кнопка представляет собой приставку с аксессуарами справа, а остальная - обычная панель инструментов. Панель инструментов Safari по-прежнему настраивается, поэтому это, скорее всего, будет.

ответ

0

Я решил пойти дальше и использовать панель инструментов, и она работает очень хорошо.

  • Я взял NSTitleBarAccessoryController подкласс и сделал это наследовать от NSViewController вместо.
  • Я создал настраиваемую панель инструментов для моего окна с одним «элементом панели инструментов изображения» как в разрешенных, так и по умолчанию наборах.
  • Элемент панели инструментов имеет высоту 32 и максимальную ширину 10000, чтобы она могла растягиваться, чтобы заполнить строку заголовка.
  • В моем делегате панели инструментов, в toolbarWillAddItem:, я создаю экземпляр контроллера представления из наконечника и поместил его представление в элемент.
  • Текстовая метка, которая фактически имеет название нового окна, имеет свой value, связанный с окном title.
  • Чтобы соответствовать расстоянию в строке заголовка Xcode, используйте левый и правый край на 1 пиксель (ноль будет обрезать края) и верхнего края 5.
  • window.titleVisibility = .hidden перемещает панель инструментов в область заголовка.
+0

В заключение я пришел к выводу, что подход панели инструментов - это то, что Apple предназначалось для основного содержимого заголовка, и что аксессуарные виды предназначены для дополнительных вещей сбоку. – Uncommon

Смежные вопросы