< img alt = "Анимация, показывающая модальные виды, загружающие неверный цвет фона" src = "https://i.sstatic.net/vtnz3nlo.gif"/>
В моем модальном представлении контроллеры. Я переопределяю цветовую тему, а также вручную настраивая цвет фона. Это выполняет работу на iOS, но не влияет на macOS: < /p>
Код: Выделить всё
override func viewDidLoad() {
super.viewDidLoad()
self.overrideUserInterfaceStyle = .dark
self.view.backgroundColor = myColor
}
Я попробовал установить overrideUserInterfaceStyle для объекта окна приложения, но это не дало никакого эффекта. Я пробовал установить его в application:didFinishLaunchingWithOptions: для AppDelegate, в сцене:willConnectTo:options: для SceneDelegate и даже в viewDidLoad для контроллера модального представления.В файлах xib, которые я использую для всплывающих окон и всплывающих окон, я попытался установить для фона представления верхнего уровня желаемый цвет фона, но это не дало никакого эффекта. (Обычно я устанавливаю их прозрачными, что нормально для iOS.)
Очевидно, macOS отображает пустое представление перед загрузкой xib и перед запуском viewDidLoad. Есть ли более «глубокий» способ установить цвет, чтобы избежать этого уродливого визуального эффекта?
ОБНОВЛЕНИЕ
Вот минимальный код, демонстрирующий проблему:
Код: Выделить всё
let test = UIViewController()
App.mainViewController.present(test, animated: true)
Код: Выделить всё
App.window?.overrideUserInterfaceStyle = .dark
App.mainViewController.overrideUserInterfaceStyle = .dark
let test = UIViewController()
test.overrideUserInterfaceStyle = .dark
test.view.rootView.overrideUserInterfaceStyle = .dark
test.view.window?.overrideUserInterfaceStyle = .dark
App.mainViewController.present(test, animated: true)
Код: Выделить всё
let test = UIViewController()
test.view.backgroundColor = App.bgColor
App.mainViewController.present(test, animated: true)
Подробнее здесь: https://stackoverflow.com/questions/793 ... st-windows