2014-11-03 4 views
3

Я работаю над OSX 10.10
У меня возникла странная проблема с цветами подвидных изображений, которые были перевернуты для панели HUD.
Например, кнопка, когда установлена ​​кнопка по умолчанию, выглядит правильно в Xib-файле, но при ее запуске кнопка просмотра изменяется кнопкой HUD.Подменю в панели HUD

Я имею HUD панель в моем файле XIb следующим enter image description here


Но при выполнении кнопки теряет свой статус кнопки по умолчанию. Он выглядит следующим образом: After exxecution

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

+0

ли Вы пытались создать вид между окном и кнопками? – jherran

+0

NO. Я просто перетащил панель HUD, а затем перетащил кнопку Push и установил ключ, эквивалентный Command Return. – Kaunteya

ответ

1

Попробуйте

_defaultButton.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; 
1

Интерфейс Builder соответствует набору правил, но эти правила не зависят от контекста. Контекст, о котором я говорю, «отображается в панели HUD».

Правило, применяемое в этом случае, - «нарисовать голубую кнопку в построителе интерфейса, если кнопка является кнопкой по умолчанию», даже если это не всегда то, что происходит (см. То, что вы видите на втором снимке экрана).

Я не знаю, с какой версии OS X он работает так, но теперь элементы управления в HUD Панели отображаются с другим стилем (который не имеет специального цвета для кнопки по умолчанию).

Вы можете подтвердить эту конструкцию Interface Builder, добавив в панель HUD простое NSTextField, оно будет рисоваться на белом фоне в Interface Builder, но при работе с серым фокусным кольцом у него будет черный фон.

Interface Builder:

Interface Builder

OS X 10,10:

OS X 10.10

Я никогда не нашел способ отключить это специальный стиль для элементов управления в HUD панели, но несколько обходных путей (кнопка по умолчанию все еще работает правильно, даже если не имеет особого цвета).

Специальный стиль выполняется только тогда, когда панель HUD имеет заголовок.

self.panel.styleMask = (NSHUDWindowMask | NSTitledWindowMask | NSUtilityWindowMask | NSNonactivatingPanelMask); 

Если удалить строку заголовка, он будет отображаться без какого-либо специального стиля:

self.panel.styleMask = (NSHUDWindowMask | NSUtilityWindowMask | NSNonactivatingPanelMask); 

HUD Panel without a title bar

На данный момент, вы можете реализовать и сделать свою собственную строку заголовка в панели и имитировать значение по умолчанию. Мне не очень нравится этот подход, потому что во-первых, это большая работа для простой кнопки, и пользовательский стиль элементов управления делает их красивее и удобнее читать в панели HUD.

Другим решением является способ «VLC». Они используют панели HUD, но их элементы управления не имеют специального стиля.Они используют BGHUDAppKit, который был выпущен, когда Apple предоставила панель HUD без каких-либо специальных средств управления. Они используют его, чтобы заставить синеватый стиль вместо серого цвета, который теперь используется по умолчанию в панелях HUD. Мне тоже не понравился этот подход, я не хотел добавлять библиотеку для простой кнопки, библиотека не обновлялась с 2011 года.

Что я в итоге делаю, это рисовать пользовательскую кнопку (с простым подклассом) для кнопок по умолчанию в панели HUD. Это решение является быстрым и позволяет вам выбрать цвет, который вы хотите для кнопки по умолчанию в панели HUD (синий может быть не лучшим для панели HUD, вашего вызова).

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