Глобальный оттенок Mac OS X, такой как iOS

Есть ли какой-либо способ установить глобальный цвет оттенка в OS X. Если я хочу установить фирменный цвет в элементе управления Cocoa, например NSTabView. Как облако я это делаю?


person Dan Jiang    schedule 18.11.2015    source источник
comment
Пользователь может установить контрольный цвет оттенка в Системных настройках / Общие. Это не для брендинга приложений, поскольку оно применяется ко всем приложениям, и вы также можете выбирать только между синим и графитовым.   -  person Aderstedt    schedule 18.11.2015
comment
stackoverflow.com/a/28617708/1463604   -  person Nishant    schedule 18.11.2015


Ответы (3)


если вам нужно изменить его в своем приложении

class NSAppearance : NSObject, NSCoding Описание Объект NSAppearance представляет файл, определяющий стандартный внешний вид, который применяется к подмножеству элементов пользовательского интерфейса в приложении. Приложение может содержать несколько файлов внешнего вида, и — поскольку NSAppearance соответствует NSCoding — вы можете использовать Interface Builder для назначения элементов пользовательского интерфейса внешнему виду.

person user3441734    schedule 18.11.2015

Нам нужно было сделать это для приложения, которое хотело иметь очень похожий внешний вид между версиями Windows и Mac OS X (не осуждайте меня — это то, чего хотят клиенты). В итоге мы сделали более-менее:

  1. Создайте NSDictionary одобренных брендом цветов, проиндексированных по тому, для чего используется цвет (* цвета текста, цвета фона, цвета кнопок и т. д.).
  2. Добавьте «определяемый пользователем атрибут времени выполнения» в инспекторе InterfaceBuilder, сообщая каждому представлению, какие цвета использовать.
  3. Напишите категорию в NSView (и нескольких других представлениях Appkit), которая реализует установщик для этого атрибута, который затем вызывает -setBackgroundColor: или любой другой API AppKit, необходимый для изменения цветов по умолчанию.
  4. Поскольку -setBackgroundColor: доступен только в представлениях, имеющих слой Core Animation, в итоге мы добавили код в наш установщик свойств NSView для вызова -setWantsLayer:YES в каждом представлении, которое нужен цвет фона не по умолчанию.
person Mark Bessey    schedule 18.11.2015

Другой подход заключается в создании «файла внешнего вида», который можно загрузить, чтобы переопределить внешний вид элементов управления AppKit. Это не очень хорошо задокументированный процесс, но подробности см. в этом связанном вопросе/ответе StackOverflow. Как создать файл внешнего вида для NSAppearance?

person Mark Bessey    schedule 18.11.2015
comment
Спасибо. Я получил основное представление о том, что делать. Это не так просто, как iOS. - person Dan Jiang; 19.11.2015