SwiftUI iOS14-导航视图+;列表-韩元';t填充空间
自从iOS 14更新后,导航视图中的列表出现问题 下面是一个简单的代码分解——我已经将所有没有显示问题的代码条带化了SwiftUI iOS14-导航视图+;列表-韩元';t填充空间,swift,swiftui,swiftui-list,ios14,swiftui-navigationview,Swift,Swiftui,Swiftui List,Ios14,Swiftui Navigationview,自从iOS 14更新后,导航视图中的列表出现问题 下面是一个简单的代码分解——我已经将所有没有显示问题的代码条带化了 struct ContentView: View { var views = ["Line 1", "Line 2", "Line 3"] var body: some View { NavigationView {
struct ContentView: View {
var views = ["Line 1", "Line 2", "Line 3"]
var body: some View {
NavigationView {
VStack {
List {
ForEach(views, id: \.self) { view in
VStack {
Text("\(view)")
}
.background(Color.red)
}
}
}
}
}
}
这将产生以下结果:
我不明白为什么列表会像那样悬停在导航视图的中心。据我所知,这将生成一个占用所有可用空间的listview(navigationbar所在的顶部除外)
事实上,在iOS 13.5上运行时,我得到的结果如下图所示:
我已经通读了文档,但不明白为什么会突然发生这种行为
任何帮助都将不胜感激
谢谢你的问题
在某些情况下,iOS 14中的列表
或导航视图
的默认样式可能与iOS 13中的不同
解决方案#1-显式listStyle
它不再总是PlainListStyle
(如iOS 13中的那样),有时也是InsetGroupedListStyle
您需要将listStyle
显式指定为PlainListStyle
:
.listStyle(PlainListStyle())
例如:
struct ContentView: View {
var views = ["Line 1", "Line 2", "Line 3"]
var body: some View {
NavigationView {
VStack {
List {
ForEach(views, id: \.self) { view in
VStack {
Text("\(view)")
}
.background(Color.red)
}
}
.listStyle(PlainListStyle()) // <- add here
}
}
}
}
struct ContentView: View {
var views = ["Line 1", "Line 2", "Line 3"]
var body: some View {
NavigationView {
VStack {
List {
ForEach(views, id: \.self) { view in
VStack {
Text("\(view)")
}
.background(Color.red)
}
}
}
}
.navigationViewStyle(StackNavigationViewStyle()) // <- add here
}
}
例如:
struct ContentView: View {
var views = ["Line 1", "Line 2", "Line 3"]
var body: some View {
NavigationView {
VStack {
List {
ForEach(views, id: \.self) { view in
VStack {
Text("\(view)")
}
.background(Color.red)
}
}
.listStyle(PlainListStyle()) // <- add here
}
}
}
}
struct ContentView: View {
var views = ["Line 1", "Line 2", "Line 3"]
var body: some View {
NavigationView {
VStack {
List {
ForEach(views, id: \.self) { view in
VStack {
Text("\(view)")
}
.background(Color.red)
}
}
}
}
.navigationViewStyle(StackNavigationViewStyle()) // <- add here
}
}
struct ContentView:View{
变量视图=[“第1行”、“第2行”、“第3行”]
var body:一些观点{
导航视图{
VStack{
名单{
ForEach(视图,id:\.self){view in
VStack{
文本(“\(视图)”)
}
.背景(颜色.红色)
}
}
}
}
.navigationViewStyle(StackNavigationViewStyle())//您好,谢谢。我不想隐藏导航栏。事实上,导航栏根本不是问题。我的问题是列表应该占据屏幕上所有可用的空间。但它只占iOS14上的一小部分中间部分,如上图所示。我相信列表应该在水平和垂直方向上填充视图基于上述代码(在ios 13.5上也是如此)我用更多的图片更新了我的问题,再次感谢大家的支持help@swift--帮助谢谢,这是因为VStack
。我更新了我的答案。@swift--帮助哦,我现在明白你想要什么了-请查看更新的答案。@koen在上面的例子中,当包装在VStack中时,List
和List+ForEach
带有插入。只有删除VStack或设置。listStyle
才能显式删除插入。不幸的是,当InsetGroupedListStyle
是默认样式时,它还没有很好的文档记录。我花了一天时间对此进行故障排除。谢谢你的提问