SwiftUI - TabView Light Mode UIColor отображается в предварительном просмотре, а не в Sim или устройстве

Я использую Swift 5.3 на MacOS 11.01 и создал новое "мультиплатформенное" приложение для iOS 14.2. Я создал пользовательские цветовые ресурсы для светлого / темного режимов, но у меня возникают проблемы с отображением цвета фона светлого режима на моем TabView. Цвет фона темного режима TabView выглядит нормально.

Цвет фона светового режима выглядит идеально в Xcode Preview, но когда я запускаю приложение в Sim или на моем устройстве, цвет фона панели вкладок ясен в светлом режиме, но показывает правильный цвет для темного режима.

Я использую одни и те же цветовые ресурсы для раскрашивания моего NavigationView, и цвета светлого и темного режима отображаются правильно, когда выбраны соответствующие режимы.

Есть ли что-то очевидное, чего мне не хватает в последней версии SwiftUI 5.3 и цветных ресурсах?

Я использую следующий код в .onAppear в TabView

UITabBar.appearance().barTintColor = UIColor(named: "barBackground")

Обратите внимание, что "barBackground" - это настраиваемый набор цветов, который я создал, чтобы добавить фоновые цвета светлого / темного режима как в NavigationView, так и в TabView.

С радостью предоставлю дополнительную информацию, если это не ясно. Благодаря!

1 ответ

Решение

Немного поздно делать это в .onAppear, внешний вид необходимо обязательно изменить перед созданием затронутого вида, поэтому сделайте это в init

init() {
    UITabBar.appearance().barTintColor = UIColor(named: "barBackground")
}
Другие вопросы по тегам