在ScrollView SwiftUI中添加时隐藏列表

时间:2019-11-20 16:48:18

标签: ios list scrollview swiftui

我在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")
                }
            }
        }
    }
}

sw

2 个答案:

答案 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之类的文件中时,就无法正确推断其大小。

解决方案:

您在这里有一些选择:

1。调整List的大小以自动匹配其内容(完美)

您可以直接使用ForEach来代替List,这样您就可以更好地控制内容大小

ForEach(0 ..< 5) { item in
    VStack(alignment: .leading) {
        Text("Hello World").frame(height: 42)
        Divider()
    }.padding(.horizontal, 8)
}

您可以根据需要更改所有大小和间距


2。调整List的大小以手动匹配其内容(不错,但不完美)

通过在UIKit上设置.frame()修饰符,像在List中一样给它一个静态框架:

List(0 ..< 5) { item in
    Text("Hello World")
}.frame(height: 224)

您可以使用GeometryReader来找到父级的确切大小,并将其应用于List


3。只显示List(不好,但是可以用)

.scaledToFill()修饰符添加到List