Как установить исходный цвет фона окон Mac Catalyst?IOS

Программируем под IOS
Ответить
Anonymous
 Как установить исходный цвет фона окон Mac Catalyst?

Сообщение Anonymous »

My IOS и Mac Catalyst в приложении по умолчанию использует темную тему темного цвета, независимо от темы цвета системы. Когда приложение представляет модальный контроллер представления (всплывающее окно или поповер) на iOS, фон этого представления темный для всей видимой жизни. Но на macOS, если цветовая тема системы является легкой, фон всплывающего окна изначально белый до тех пор, пока вид не загрузится, а фон попора изменяется на белый, когда он отклоняет: < /p>
< img alt = "Анимация, показывающая модальные виды, загружающие неверный цвет фона" src = "https://i.sstatic.net/vtnz3nlo.gif"/>
В моем модальном представлении контроллеры. Я переопределяю цветовую тему, а также вручную настраивая цвет фона. Это выполняет работу на iOS, но не влияет на macOS: < /p>

Код: Выделить всё

override func viewDidLoad() {
super.viewDidLoad()

self.overrideUserInterfaceStyle = .dark

self.view.backgroundColor = myColor
}
Я настраиваю overdeUserInterfacestyle таким образом на основном контроллере представления; Это обрабатывает основное представление, но не влияет на всплывающие окна и Popovers. Я попытался установить его в приложении: didfinishlaunchingwithoptions: для AppDelegate, в сцене: WillConnectto: Options: для ScenedElegate и даже в ViewDidload для контроллера модального представления. Br /> В файлах XIB, которые я использую для всплывающих часов и Popovers, я попытался установить фон представления верхнего уровня для моего желаемого цвета фона, но это не имело никакого эффекта. (Обычно я устанавливаю их на прозрачные, что хорошо в iOS.) < /P>
По -видимому, MacOS отображает пустое представление перед загрузкой XIB и перед запуском ViewDidload. Есть ли «более глубокий» способ настроить цвет, чтобы избежать этого уродливого визуального эффекта? Минимальный код, который демонстрирует проблему: < /p>

Код: Выделить всё

let test = UIViewController()
App.mainViewController.present(test, animated: true)
Это приводит к белому всплывающему окну, если Mac использует светлую цветную тему, даже если основной контроллер View Controller ReplideUserInterfacestyle установлен на Dark. Я попытался установить переопределение UserInterfacestyle на разных уровнях, но без изменений:

Код: Выделить всё

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)
В iOS все, что мне нужно было — это установить overrideUserInterfaceStyle на главном контроллере представления.

Подробнее здесь: https://stackoverflow.com/questions/793 ... st-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»