如果超过视图高度,SwiftUI + ScrollView 将无法添加视图
SwiftUI + ScrollView not able to add views if it's exceed view height
我试图在单个视图中显示 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 不允许添加更多组件,它有什么好处?
您需要使用 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)
}
}
}
我试图在单个视图中显示 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 不允许添加更多组件,它有什么好处?
您需要使用 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)
}
}
}