Панель навигации SwiftUI Лишнее пространство, даже когда скрыто - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть навигационный вид, содержащий некоторые элементы (пример, показанный ниже, обратите внимание на пространство выше), и по какой-то причине наверху есть лишнее пространство. Точнее говоря, я работаю над приложением для iPad, и лишнее пространство сверху меня беспокоит. Ниже приведен фрагмент моего кода.

var body: some View {

    NavigationView {
        Text("There is an excess space above")
    }.navigationViewStyle(StackNavigationViewStyle())
    .navigationBarTitle(Text(""), displayMode: .inline)
    .navigationBarHidden(true)
    .edgesIgnoringSafeArea(.top)
}

Я использовал .navigationViewStyle(StackNavigationViewStyle()) из-за решенной проблемы здесь , а другие методы были вызваны только в попытке удалить это пространство (из других подобных вопросов здесь), но не сработало в конце. Это происходит как с симуляцией iPhone, так и с iPad. Спасибо

enter image description here

enter image description here

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Эти модификаторы должны быть указаны внутри вид навигации, как показано ниже

demo

NavigationView {
    Text("There is an excess space above")
       .navigationBarTitle(Text(""), displayMode: .inline)  // !!
       .navigationBarHidden(true)                           // !!
}.navigationViewStyle(StackNavigationViewStyle())
.edgesIgnoringSafeArea(.top)
0 голосов
/ 29 апреля 2020

После нескольких проб и ошибок мне удалось заставить синюю рамку покрывать весь экран (обратите внимание на синие рамки на следующем скриншоте). Пока не совсем понятно, почему, но для работы решения должны присутствовать все следующие строки. @Asperi упомянул, что мы должны добавить модификаторы в представление навигации, но по какой-то причине мы должны добавить как к самому NavigationView, так и к нему внутри.

    var body: some View {
        NavigationView {
            Text("There is no more excess space, the blue outline covers the entire screen")
            .frame(maxWidth: .infinity, maxHeight: .infinity) // Fill screen
            .navigationBarTitle("")
            .navigationBarHidden(true)
        }
        .navigationViewStyle(StackNavigationViewStyle())
        .navigationBarTitle("")
        .edgesIgnoringSafeArea(.all)
    }

enter image description here

...