Как сделать приложение menubar хорошо выглядеть с "темным режимом" в Йосемити?

при разработке приложения menubar мне трудно найти предпочтительный метод для того, чтобы приложение действительно выглядело хорошо. Я бы подумал, что Apple controls по существу справилась бы с этим по большей части, но это не так.

каков предпочтительный способ убедиться, что приложение menubar выглядит хорошо как в светлом, так и в темном режиме? Мне не хватает некоторых функций управления, которые облегчают это более легко, или мне нужно вручную определить режим и изменить надлежащего управления?

2 ответов


у меня есть приложение menubar, и мне не нужно было ничего делать, чтобы это выглядело хорошо в темной теме.

тема:

Light theme

тема:

Dark theme

самые важные вещи, которые вам нужно сделать, это:

  1. использовать системные цвета (например, [NSColor textColor], [NSColor textBackgroundColor]. Они автоматически адаптируются к различным темам. Вижу цвет и Типография раздел руководства по человеческому интерфейсу OS X от Apple.

  2. использование шаблонов изображений. Они также адаптируются к изменениям цвета. Вижу раздел изображений, предоставляемых системой руководства по человеческому интерфейсу OS X от Apple.

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

обновление: Пример проекта здесь: https://github.com/zpasternack/MenuBarTest


Ну, вы не объяснили (или не показали), каким образом это выглядит плохо. Вероятно, вы используете обычное, не шаблонное изображение для его значка. Вы должны использовать образ шаблона, который является изображением, единственной значительной частью которого является Альфа-маска. Вы говорите системе, что это образ шаблона, либо называя его суффиксом "шаблон" (например, "FooTemplate.ПНГ") или по телефону -setTemplate: на нем.