swift - 如果超过视图高度,SwiftUI + ScrollView 无法添加视图
问题描述
我试图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)
}
}
}
推荐阅读
- python - 使用 selenium python web 驱动程序从角度单击表中的所有行
- appium - 在字段上输入文本的替代方法
- bash - 在单个命令中获取令牌
- html - CSS 格式问题,div 相互移动,div 不居中
- image-processing - 尝试在 PNG 周围添加笔画,可以改进吗?
- forms - 我无法恢复控制器中复选框的值
- c++ - 在标准布局对象(例如,使用 offsetof)中进行指针运算时,我们是否需要使用 std::launder?
- android - Google 街景应用(不是 Google 地图)的 URL 方案或意图
- python - 如何验证时间窗口之间是否存在重叠
- c# - 如何重构代码以返回 IsPalindrome