【问题标题】:SwiftUI + ScrollView not able to add views if it's exceed view height如果超过视图高度,SwiftUI + ScrollView 无法添加视图
【发布时间】:2020-01-01 10:34:40
【问题描述】:

我试图在一个视图中显示Text 组件的所有属性。以不同的样式和字体显示Text。为此,我在单个视图中添加了多个 Text 组件。

为了使它成为可能,我正在使用ScrollView 组件并在其中添加所有Text 组件。 在某些时候,它不允许我在 scrollView 中再添加一个组件,并且每次都显示不同的错误。

代码:

struct TextClass: View {
    var body: some View {
        GeometryReader { geometry in
            ScrollView(.vertical, showsIndicators: false) {
                Text("This is suppose to be a really long text that can go on to multiple lines. By default, it could go more than one lines.").padding()

                Text("This is only one line regardless of how long the sentence is")
                    .padding()
                    .lineLimit(1)
                Text("Hello Swift - LargeTitle").font(.largeTitle).padding()
                Text("Hello Swift - Title").font(.title).padding()
                Text("Hello Swift - Headline").font(.headline).padding()
                Text("Hello Swift - SubHeadline").font(.subheadline).padding()
                Text("Hello Swift - body").font(.body).padding()
                Text("Hello Swift- callout").font(.callout).padding()
                Text("Hello Swift- Footnote").font(.footnote).padding()

                Text("Font Weight - Ultralight").fontWeight(.ultraLight).padding()
                Text("Font Weight - Thin").fontWeight(.thin).padding()
    //            Text("Font Weight - light").fontWeight(.light).padding()
    //            Text("Font Weight - Regular").fontWeight(.regular).padding()
            }.frame(width: geometry.size.width)
        }
    }
}

struct TextClass_Previews: PreviewProvider {
    static var previews: some View {
        TextClass()
    }
}

它显示如下错误:

如果我评论行

Text("Font Weight - Thin").fontWeight(.thin).padding()

错误消失了。

在这种情况下,它似乎只允许我添加 10 个 Text 组件如果我添加的数量超过了它会给我一个错误。

这是一个错误吗?这是 SwiftUI 中的常见行为吗?如果 scrollView 不允许添加更多组件,它有什么好处?

【问题讨论】:

  • 记录在案的 SwiftUI 限制,只需将您的 Text(或其他视图)嵌入到 Group {} 中 10 个(或更少)项
  • 很伤心,顺便感谢您提供的信息。

标签: swift text scrollview swiftui geometryreader


【解决方案1】:

您需要使用Group,因为一个视图中的元素不能超过 10 个

struct TextClass: View {
    var body: some View {
        GeometryReader { geometry in
            ScrollView(.vertical, showsIndicators: false) {
                    Group {
                            Text("This is suppose to be a really long text that can go on to multiple lines. By default, it could go more than one lines.").padding()
                            Text("This is only one line regardless of how long the sentence is")
                                .padding()
                                .lineLimit(1)
                            Text("Hello Swift - LargeTitle").font(.largeTitle).padding()
                            Text("Hello Swift - Title").font(.title).padding()
                            Text("Hello Swift - Headline").font(.headline).padding()
                            Text("Hello Swift - SubHeadline").font(.subheadline).padding()
                            Text("Hello Swift - body").font(.body).padding()
                    }
                    Group {
                            Text("Font Weight - Ultralight").fontWeight(.ultraLight).padding()
                            Text("Font Weight - Thin").fontWeight(.thin).padding()
                            Text("Font Weight - light").fontWeight(.light).padding()
                            Text("Font Weight - Regular").fontWeight(.regular).padding()
                    }
            }.frame(width: geometry.size.width)
        }
    }
}

【讨论】:

  • 我想知道为什么 ScrollView 的视图不能超过 10 个,我遇到的错误是编译器错误extra arguments at positions #11, #12, #13 in cal,只是为了让 Google 可以发现它。感谢您的解决方案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多