SwiftUI Навигация и строка состояния конфликтуют в цвете / прозрачности внутри TabView - PullRequest
2 голосов
/ 14 октября 2019

Мое приложение состоит из нескольких представлений на нескольких вкладках внутри TabView. Эти представления создают свои собственные NavigationView s. К сожалению, существование TabView приводит к тому, что их цвета и прозрачность конфликтуют со строкой состояния приложения, которая больше не соответствует панели навигации.

Это легко воспроизвести в примере приложения, используя следующиеcode.

struct ContentView: View {
    var body: some View {
        TabView {
            NavView()
        }
    }
}

struct NavView: View {
    var body: some View {
        NavigationView {
            List {
                ForEach(0..<10, id: \.self) { _ in
                    Section(header: Text("Foo")) {
                        Text("Bar")
                    }
                }
            }
            .listStyle(GroupedListStyle())
            .navigationBarTitle("Foobar")
        }
    }
}

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

Существует ли API-интерфейс SwiftUI для доступа кстиль строки состояния? Или, возможно, какой-то другой обходной путь?

large navigation bar screenshot

inline navigation bar screenshot

1 Ответ

4 голосов
/ 15 октября 2019

Согласно документации Apple, edgesIgnoringSafeArea(_:) следует применять к TabView:

https://developer.apple.com/documentation/swiftui/vsplitview/3288813-edgesignoringsafearea

Расширяет вид из безопасной области по указанным краям.

struct ContentView: View {
    var body: some View {
        TabView {
            NavView()
        }.edgesIgnoringSafeArea(.top)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...