Есть ли какой-либо способ установить глобальный цвет оттенка в OS X. Если я хочу установить фирменный цвет в элементе управления Cocoa, например NSTabView. Как облако я это делаю?
Глобальный оттенок Mac OS X, такой как iOS
Ответы (3)
если вам нужно изменить его в своем приложении
class NSAppearance : NSObject, NSCoding Описание Объект NSAppearance представляет файл, определяющий стандартный внешний вид, который применяется к подмножеству элементов пользовательского интерфейса в приложении. Приложение может содержать несколько файлов внешнего вида, и — поскольку NSAppearance соответствует NSCoding — вы можете использовать Interface Builder для назначения элементов пользовательского интерфейса внешнему виду.
Нам нужно было сделать это для приложения, которое хотело иметь очень похожий внешний вид между версиями Windows и Mac OS X (не осуждайте меня — это то, чего хотят клиенты). В итоге мы сделали более-менее:
- Создайте NSDictionary одобренных брендом цветов, проиндексированных по тому, для чего используется цвет (* цвета текста, цвета фона, цвета кнопок и т. д.).
- Добавьте «определяемый пользователем атрибут времени выполнения» в инспекторе InterfaceBuilder, сообщая каждому представлению, какие цвета использовать.
- Напишите категорию в NSView (и нескольких других представлениях Appkit), которая реализует установщик для этого атрибута, который затем вызывает -setBackgroundColor: или любой другой API AppKit, необходимый для изменения цветов по умолчанию.
- Поскольку -setBackgroundColor: доступен только в представлениях, имеющих слой Core Animation, в итоге мы добавили код в наш установщик свойств NSView для вызова -setWantsLayer:YES в каждом представлении, которое нужен цвет фона не по умолчанию.
Другой подход заключается в создании «файла внешнего вида», который можно загрузить, чтобы переопределить внешний вид элементов управления AppKit. Это не очень хорошо задокументированный процесс, но подробности см. в этом связанном вопросе/ответе StackOverflow. Как создать файл внешнего вида для NSAppearance?