我使用 SwiftUI 和导航视图创建了一个主从应用程序,但导航栏未正确显示在详细信息视图上。在 iPhone X 和更新的设备上,它不会填满屏幕的顶部(时间和状态图标所在的位置)。我使用主从模板在 Xcode 中创建了一个新项目,该应用程序渲染得很好。我已将我的应用程序与模板进行了比较,老实说我找不到任何不合适的地方,所以欢迎提出任何建议!
这是我的应用程序的屏幕截图。请注意,导航栏没有填满屏幕顶部:
这是模板应用程序的屏幕截图,它按应有的方式显示栏:
这是主视图的代码:
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)
}
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是详细视图的代码:
struct AssignmentDetailView: View {
@Binding var assignment: Assignment
@Environment(\.managedObjectContext) var context
var body: some View {
Text("Hello")
.padding()
.navigationBarTitle(Text(""), displayMode: .inline)
}
}
Run Code Online (Sandbox Code Playgroud)
您应该能够将此修改器添加到您的 NavigationView
.edgesIgnoringSafeArea(.top)
到它只会忽略顶部的地方。您也可以根据您需要的应用程序进行.bottom
设置。.all
希望这有效!
归档时间: |
|
查看次数: |
3389 次 |
最近记录: |