#ios #uikit #mac-catalyst #ios-darkmode #nstoolbar
#iOS #uikit #mac-catalyst #ios-темный режим #nstoolbar
Вопрос:
В моем приложении для iOS / macOS пользователь может выбирать между светлым и темным внешним видом.
Это делается путем установки overrideUserInterfaceStyle окна приложения, например
window.overrideUserInterfaceStyle = .dark
Он отлично работает на iOS / iPadOS.
В macOS (Catalyst) приложение использует NSToolbar, который всегда отображается в режиме, выбранном в системных настройках, независимо от того, что установлено для переопределения пользовательского интерфейса окна (см. Скриншот).
Поскольку это не очень хорошее визуальное впечатление, я хотел бы знать, как я могу установить светлый / темный режим и для NSToolbar.
Ответ №1:
Добавьте UIUserInterfaceStyle
значение Dark
в Info.plist вашего приложения. Это приведет к переводу всего приложения в темный режим на iOS 13 и Mac Catalyst (вам не нужно устанавливать переопределение userinterfacestyle).
Комментарии:
1. Спасибо вам за это. Сэкономил мне кучу времени.
2. mr. оригинальное имя пользователя. ОТМЕТЬТЕ ЭТОТ ОТВЕТ ПРАВИЛЬНЫМ!
3. Спасибо, это ценный совет, но не решает проблему полностью, поскольку это «статическое» решение и не позволяет изменять внешний вид во время выполнения. Пожалуйста, ознакомьтесь с принятым ответом.
4. @iosdeveloper Вы правы, хотя я столкнулся с несколькими странными ошибками при использовании метода NSApplication (я не помню подробностей, но в основном было несколько кнопок панели инструментов и меню, которые не могли переключать стили). Но если это работает для вас, отлично!
Ответ №2:
Это можно сделать, добавив плагин macOS, который имеет доступ ко всему API AppKit. Инструкции можно найти здесь: Как получить доступ к API AppKit из приложений Mac Catalyst
Затем вы можете установить желаемый внешний вид там во время выполнения, например:
NSApplication.shared.appearance = NSAppearance(named: .darkAqua)