我在 ScorllView
中添加了一个 List
,但是在将其添加到 ScrollView
之后它没有显示在 Canvas 中
这是我的代码
struct ContentView: View {
var body: some View {
ScrollView {
VStack {
Text("My List")
.font(.largeTitle)
.fontWeight(.bold)
List(0 ..< 5) { item in
Text("Hello World")
}
}
}
}
}
最佳答案
问题:
那是因为 List
从其父级 View
推断它的大小。因此,当您将其嵌入具有动态高度的类似 VStack
的内容时,它无法正确推断其大小。
解决方案:
您在这里有一些选择:
1。调整 List
的大小以自动匹配其内容(完美)
您可以直接使用ForEach
而不是使用List
,这样您就可以更好地控制内容的大小
ForEach(0 ..< 5) { item in
VStack(alignment: .leading) {
Text("Hello World").frame(height: 42)
Divider()
}.padding(.horizontal, 8)
}
您可以根据需要更改所有尺寸和间距
2。调整 List
的大小以手动匹配其内容(好但不完美)
通过在 List
上设置 .frame()
修饰符,为它提供一个静态框架,就像您在 UIKit
中所做的那样:
List(0 ..< 5) { item in
Text("Hello World")
}.frame(height: 224)
您可以使用 GeometryReader
找到父级的确切大小并将其应用于 List
3。只需显示 List
(不好但有效)
添加 .scaledToFill()
修饰符到 List
关于ios - 在 ScrollView SwiftUI 中添加时列表隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58959475/