Темный режим macOS и NSAboutPanelOptionCredits
У меня есть довольно прямое приложение под названием Range в магазине приложений, которое я хочу сделать темным режимом, совместимым с macOS 10.14. Я заметил, что окно "О программе" не меняет все цвета текста.
Я использую NSAboutPanelOptionCredits, где мне просто нужно связать файл Credits.rtf, а приложение обрабатывает все остальное.
https://developer.apple.com/documentation/appkit/nsaboutpaneloptioncredits?language=objc
Проблема в том, что, когда я переключаюсь в темный режим, текст в файле остается черным, в то время как другой автоматически включаемый текст становится белым (имя приложения, версия и т. Д.). Я открыл файл.rtf и нет наследования или что-то в этом роде.
Есть идеи, что я делаю неправильно и / или отсутствует?
Цени любые мысли. Спасибо!
3 ответа
Хитрость заключается в использовании семантических цветов.
Используя XCode, отредактируйте свой файл RTF. Выделите текст и откройте палитру цветов текста.
Xcode добавляет цвета разработчика в палитру цветов. Выберите подходящий семантический цвет для вашего текста; Я склонен использовать labelColor
, secondaryLabelColor
, а также linkColor
,
Когда вы переключаетесь в темный режим, эти семантические цвета меняются соответствующим образом.
Примечания к выпуску 10.14 AppKit могут быть полезны:
Внешние кредиты
Вы делаете так, чтобы область кредитов соответствовала внешнему виду приложения, предоставляя кредиты в виде приписанной строки или помещая Credits.rtf или Credits.rtfd в комплект вашего приложения. Используйте правильные системные цвета, такие как textColor, linkColor и labelColor, чтобы правильно отображать текст в любом виде. Если вы используете файлы.rtf или.rtfd для предоставления текста для области кредитов, файл должен быть сохранен с использованием macOS 10.14 (бета-версия 5 или более поздняя), чтобы получить обработку с учетом внешнего вида. Если вы создаете файл.rtf или.rtfd в более ранней версии macOS, обработка с учетом внешнего вида применяется только в том случае, если файл содержит только черный текст без цвета фона.
Ты можешь попробовать
label.accessibilityIgnoresInvertColors = true