自 iOS 14 更新以来,我遇到了 NavigationView 中的 List 问题。
这是代码的简单细分 - 我已经将所有未显示问题的内容都进行了条带化
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)
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会产生以下结果:
我无法弄清楚为什么列表会像那样悬停在导航视图的中心。据我所知,这应该会生成一个占据所有可用空间的列表视图(导航栏所在的顶部除外)。
事实上,当在 iOS 13.5 上运行时,我得到的结果如下图所示:
我已经通读了文档,但无法弄清楚为什么会突然发生这种行为。
任何帮助将不胜感激。
谢谢
我需要使用 GeometryReader 根据屏幕宽度调整视图大小。这是我重构之前的情况。(放大图片以查看代码并并排预览)。
import SwiftUI
struct WorkingView: View {
var data = ["Hit the Edit button to reorder", "Practice Coding", "Grocery shopping", "Get tickets", "Clean house", "Do laundry", "Cook dinner", "Paint room"]
var body: some View {
NavigationView {
GeometryReader { geometry in
List {
ForEach(data, id: \.self) { content in
HStack {
Text(String(content.count))
.frame(width: geometry.size.width * 0.10)
VStack {
Text(content)
.underline()
Text(content)
.bold()
Text(content)
.foregroundColor(.yellow)
}
}
}
}
.navigationTitle(Text("Home"))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我将行重构为提取的视图后得到的结果。现在,当在这里使用 GeometryReader 时,行高变得混乱。
import …Run Code Online (Sandbox Code Playgroud)