Интерфейс Builder соответствует набору правил, но эти правила не зависят от контекста. Контекст, о котором я говорю, «отображается в панели HUD».
Правило, применяемое в этом случае, - «нарисовать голубую кнопку в построителе интерфейса, если кнопка является кнопкой по умолчанию», даже если это не всегда то, что происходит (см. То, что вы видите на втором снимке экрана).
Я не знаю, с какой версии OS X он работает так, но теперь элементы управления в HUD Панели отображаются с другим стилем (который не имеет специального цвета для кнопки по умолчанию).
Вы можете подтвердить эту конструкцию Interface Builder, добавив в панель HUD простое NSTextField
, оно будет рисоваться на белом фоне в Interface Builder, но при работе с серым фокусным кольцом у него будет черный фон.
Interface Builder:
OS X 10,10:
Я никогда не нашел способ отключить это специальный стиль для элементов управления в HUD панели, но несколько обходных путей (кнопка по умолчанию все еще работает правильно, даже если не имеет особого цвета).
Специальный стиль выполняется только тогда, когда панель HUD имеет заголовок.
self.panel.styleMask = (NSHUDWindowMask | NSTitledWindowMask | NSUtilityWindowMask | NSNonactivatingPanelMask);
Если удалить строку заголовка, он будет отображаться без какого-либо специального стиля:
self.panel.styleMask = (NSHUDWindowMask | NSUtilityWindowMask | NSNonactivatingPanelMask);
На данный момент, вы можете реализовать и сделать свою собственную строку заголовка в панели и имитировать значение по умолчанию. Мне не очень нравится этот подход, потому что во-первых, это большая работа для простой кнопки, и пользовательский стиль элементов управления делает их красивее и удобнее читать в панели HUD.
Другим решением является способ «VLC». Они используют панели HUD, но их элементы управления не имеют специального стиля.Они используют BGHUDAppKit
, который был выпущен, когда Apple предоставила панель HUD без каких-либо специальных средств управления. Они используют его, чтобы заставить синеватый стиль вместо серого цвета, который теперь используется по умолчанию в панелях HUD. Мне тоже не понравился этот подход, я не хотел добавлять библиотеку для простой кнопки, библиотека не обновлялась с 2011 года.
Что я в итоге делаю, это рисовать пользовательскую кнопку (с простым подклассом) для кнопок по умолчанию в панели HUD. Это решение является быстрым и позволяет вам выбрать цвет, который вы хотите для кнопки по умолчанию в панели HUD (синий может быть не лучшим для панели HUD, вашего вызова).
ли Вы пытались создать вид между окном и кнопками? – jherran
NO. Я просто перетащил панель HUD, а затем перетащил кнопку Push и установил ключ, эквивалентный Command Return. – Kaunteya