我在VStack中有一些描述文字,我想将其限制为3行。我的理解是,我使用Text()
修饰符修改了.lineLimit(3)
。但是,当我这样做时,某些描述的上限为 3 行,而其他描述的上限为 1 。关于这种情况发生的地方似乎没有任何一致性。
我认为这可能是我调用修饰符属性的顺序,但是切换.font(.body)
和.lineLimit
的顺序并没有改变。我还尝试删除了.padding()
,但这也不起作用。
List(clubData) { club in
VStack(alignment: .leading) {
Text(club.name)
.font(.title)
.lineLimit(nil)
Text(club.subtitle)
.lineLimit(4)
.font(.body)
}
.padding()
}
这是正在发生的事情的图像:
答案 0 :(得分:5)
对于Xcode 11 GM,您可能还会得到以下答案:
https://stackoverflow.com/a/56604599/30602
摘要是,在其他Builder中,您需要向Text()中添加.fixedSize(horizontal: false, vertical: true)
才能使其包装。
答案 1 :(得分:1)
答案是下载Xcode 11.2 BETA。 App Store中的Xcode 11 GM还存在.linelimit(nil)限制在一行的问题。
答案 2 :(得分:0)
我已经经历过了。
现在,如果将视图包装在GeometryReader中,则它应遵守行数限制
例如
GeometryReader { _ in
VStack(alignment: .leading) {
...
}
}
答案 3 :(得分:0)
2019年12月12日使用Xcode 11.2.1
请勿信任.lineLimit ,请使用框架设置适当的高度(根据您的字体大小)来包装多行文本。而且,即使您认为自己有足够的高度,也不要使用.lineSpacing 。SwiftUI必须采用一种真正的“特殊”方式来确定VStack高度是否足够以及要显示多少行。
答案 4 :(得分:0)
2020年4月23日,Xcode 11.4
就我而言,我从TMDB API获得电影说明文本,该文本具有动态长度。它嵌入在VStack中。
真的很烦。甚至我设置了.linelimit(nil),即描述文字的行,它仍然会有一个限制,最终会忽略一些文字,例如“长说明...”。
答案 5 :(得分:-1)
我有同样的错误。但是我发现如果将行数限制设置为nil,一切都很好。
设置.lineLimit(nil)