我在List
内添加了ScorllView
,但在ScrollView
内添加后未显示在画布中
这是我的代码
struct ContentView: View {
var body: some View {
ScrollView {
VStack {
Text("My List")
.font(.largeTitle)
.fontWeight(.bold)
List(0 ..< 5) { item in
Text("Hello World")
}
}
}
}
}
答案 0 :(得分:0)
我认为您预期以下情况:
var body: some View {
GeometryReader { geometry in
ScrollView {
VStack {
Text("My List")
.font(.largeTitle)
.fontWeight(.bold)
List {
ForEach(0 ..< 50) { item in // 50 for testing
Text("Hello World")
}
}
}
.frame(height: geometry.size.height)
}
}
}
答案 1 :(得分:0)
这是因为List
从其父View
推断出其大小。因此,当您将其嵌入具有动态高度的VStack
之类的文件中时,就无法正确推断其大小。
您在这里有一些选择:
List
的大小以自动匹配其内容(完美)您可以直接使用ForEach
来代替List
,这样您就可以更好地控制内容大小
ForEach(0 ..< 5) { item in
VStack(alignment: .leading) {
Text("Hello World").frame(height: 42)
Divider()
}.padding(.horizontal, 8)
}
您可以根据需要更改所有大小和间距
List
的大小以手动匹配其内容(不错,但不完美)通过在UIKit
上设置.frame()
修饰符,像在List
中一样给它一个静态框架:
List(0 ..< 5) { item in
Text("Hello World")
}.frame(height: 224)
您可以使用GeometryReader
来找到父级的确切大小,并将其应用于List
List
(不好,但是可以用)将.scaledToFill()
修饰符添加到List