SwiftUI:导航栏未在iPhone X和更高版本的设备上显示在屏幕顶部

时间:2019-12-11 17:14:16

标签: ios swift swiftui

我已使用SwiftUI和导航视图创建了一个主从应用程序,只是导航栏未正确显示在详细信息视图上。在iPhone X和更高版本的设备上,它不会填充屏幕的顶部(时间和状态图标所在的位置)。我使用主从模板在Xcode中创建了一个新项目,该应用程序呈现得很好。我已经将我的应用程序与模板进行了比较,老实说我找不到任何不合适的东西,因此欢迎提出任何建议!

这是我的应用的屏幕截图。请注意,导航栏未填充屏幕顶部:

My app, which does not render the navigation bar properly.

这是模板应用程序的屏幕截图,其中显示了应为的栏:

Template app, which displays the bar properly.

以下是主视图的代码:

struct ListView: View {

@State var showNewAssignmentModal = false
@Environment(\.managedObjectContext) var context
@FetchRequest(entity: Assignment.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Assignment.dueDate, ascending: true), NSSortDescriptor(keyPath: \Assignment.name, ascending: true)]) var assignments: FetchedResults<Assignment>

var body: some View {
    NavigationView {
        List(assignments, id: \.self) { assignment in
            AssignmentRow(assignment: assignment).environment(\.managedObjectContext, self.context)
        }

        .navigationBarTitle(Text("Lists"))
        .navigationBarItems(
            leading: EditButton(),
            trailing: Button(
                action: {
                    self.showNewAssignmentModal = true
            }
            ) {
                Image(systemName: "plus").imageScale(.large)

            } .sheet(isPresented: $showNewAssignmentModal) {
                NewAssignmentView().environment(\.managedObjectContext, self.context)
            }
        )

    }
}
}

这是详细视图的代码:

struct AssignmentDetailView: View {

@Binding var assignment: Assignment
@Environment(\.managedObjectContext) var context

var body: some View {
    Text("Hello")
    .padding()
    .navigationBarTitle(Text(""), displayMode: .inline)

}
}

1 个答案:

答案 0 :(得分:0)

您应该可以将此修饰符添加到NavigationView中

.edgesIgnoringSafeArea(.top)

将只忽略顶部。您还可以根据需要的应用设置.bottom.all。希望这行得通!