【问题标题】:List hides when adding in ScrollView SwiftUI在 ScrollView SwiftUI 中添加时列表隐藏
【发布时间】:2020-03-16 11:22:10
【问题描述】:

我在ScorllView 中添加了一个List,但是在添加到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")
                }
            }
        }
    }
}

【问题讨论】:

  • 你为什么要这样做?你想达到什么目的?
  • @MojtabaHosseini 这只是我创建的一个示例应用程序,我们还可以在 VStack 中添加一些其他视图我担心的是在故事板中我们可以实现这一点,但为什么不能在 SwiftUI 中实现
  • 我知道,我只是想知道您喜欢如何查看列表?充满?合身?风俗?我已经在my answer 中介绍了所有这些内容,请查看。

标签: ios list scrollview swiftui


【解决方案1】:

问题:

这是因为 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

【讨论】:

    【解决方案2】:

    我假设您期望以下内容:

    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)
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-01-14
      • 1970-01-01
      • 2020-06-26
      • 2021-02-20
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      相关资源
      最近更新 更多