Цвет строки состояния Не изменяется SwiftUI
Спасибо, что нашли время помочь другим :)
Описание проблемы:
Я запускаю новое приложение для iOS 14–16 с SwiftUI. В этом новом приложении мы удалили логику AppDelegate и SceneDelegate, просто пытаясь упростить его, используя только WindowGroup.
Дело в том, что все представления в приложении должны отображать белую строку состояния (для темного контента), и таким образом я пытался настроить строку состояния один раз, в Info.plist... Но ничего не получилось, каждая страница в Интернете просит меня сделать то же самое...
И его нужно показывать рядом с экраном запуска, потому что он также похож на темный контент.
Что я делаю:
В Info.plist я применяю следующие значения:
-
View controller-based status bar appearance
со стоимостьюNO
-
Status bar style
со стоимостьюDark Content
И, возможно, немного излишне, но в разделе «Проект» > «Основные» > «Информация о развертывании» > «Стиль строки состояния»: «Темное содержимое».
Простой код фактического представления:
import SwiftUI
@main
struct ExampleApp: App {
var body: some Scene {
WindowGroup {
NavigationView {
VStack {
Text("This is a simple view. Status bar has to be white.")
}
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
}
Вопросы
- Почему не наносится цвет?
- Есть ли какой-нибудь способ изменить его, который не устарел и совместим без Scene/AppDelegate + WindowGroup?
- Влияет ли .preferredColorScheme(.dark) каким-либо образом на собственные элементы, такие как .contextMenu() ? Или просто на оттенок статус-бара?
1 ответ
Попробуйте добавить этот инициализатор в основную структуру:
init() {
// Navigation Bar Title font and background colour.
let navBarAppearance = UINavigationBar.appearance()
// Background
navBarAppearance.backgroundColor = UIColor.blue
// Font colour
navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.orange]
navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.orange]
}
Это должно помочь, если я правильно понял вашу проблему.