如果超过视图高度,SwiftUI + ScrollView 无法添加视图
Posted
技术标签:
【中文标题】如果超过视图高度,SwiftUI + ScrollView 无法添加视图【英文标题】:SwiftUI + ScrollView not able to add views if it's exceed view height 【发布时间】: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 个(或更少)项
很伤心,顺便感谢您提供的信息。
【参考方案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 可以发现它。感谢您的解决方案!以上是关于如果超过视图高度,SwiftUI + ScrollView 无法添加视图的主要内容,如果未能解决你的问题,请参考以下文章
在Scroll View的高度动画后,UIScrollView的子视图不响应触摸
使用better-scroll在vue中封装自己的Scroll组件