Не уверен, если это ошибка или нет.
Способ, которым мы исправили это, установив «Стиль строки состояния» на темное или светлое содержимое в настройках проекта. Это заставит цвет текста строки состояния определенным образом, а не будет определяться на основе устройств, находящихся в режиме «Светлый» или «Темный».
Кроме того, вам нужно установить значение «Просмотр внешнего вида строки состояния на основе контроллера» на «НЕТ» в вашем Info.plist. без этого значения «Стиль строки состояния» будет переопределен.
Затем создайте пользовательский контроллер навигации и внедрите его в свои раскадровки.
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
setNavBar()
}
func setNavBar() {
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = UIColor.blue
appearance.titleTextAttributes = [.foregroundColor: UIColor.yellow]
self.navigationBar.standardAppearance = appearance
self.navigationBar.scrollEdgeAppearance = appearance
self.navigationBar.compactAppearance = appearance
} else {
self.navigationBar.barTintColor = UIColor.blue
self.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.yellow]
}
}
}
* Цвета установлены так, что вы можете их видеть четко работает.
Я обнаружил, что лучше установить код в ViewDidLoad, а не в ViewDidAppear, потому что мои цвета не устанавливались при начальной загрузке, только после перехода назад и перезагрузки.
Я также обнаружил, что эта проблема может быть связана с "Bar Tint" NavBar. когда мы впервые пытались ее решить, мы установили «Bar Tint» на значение по умолчанию, и это, похоже, тоже разрешило ошибку. Тем не менее, он сделал это так, что мы не смогли получить цвет фона NavBar, что мы хотели. Поэтому в своих раскадровках я позаботился о том, чтобы установить это значение по умолчанию просто для хорошей меры.
Надеюсь, это поможет