Text.lineLimit() 行为在 SwiftUI 中不一致
Text.lineLimit() behavior is inconsistent in SwiftUI
我在 VStack 中有一些描述文本,我想将其限制为 3 行。我的理解是我用.lineLimit(3)
修饰符修饰Text()
。但是,当我这样做时,一些描述的上限为 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()
}
这是正在发生的事情的图像:
我经历过。
现在,如果您将视图包装在 GeometryReader 中,那么它应该遵守行限制
例如
GeometryReader { _ in
VStack(alignment: .leading) {
...
}
}
答案是下载 Xcode 11.2 BETA。 Xcode App Store 中的 11 GM 也有 .linelimit(nil) 被限制在一行的问题。
您可能还会对 Xcode 11 GM 的这个答案有所帮助:
总结是,在其他构建器中,您需要将 .fixedSize(horizontal: false, vertical: true)
添加到您的 Text() 以使其换行。
2019 年 12 月 12 日 Xcode 11.2.1
不要相信 .lineLimit,使用 frame 设置适当的高度(根据您的字体大小)来包裹您的多行文本。而且,不要使用 .lineSpacing 即使你认为你的高度足够了,SwiftUI 必须有一个真正的 'special' 方法来确定 VStack 高度是否足够以及要显示多少行.
2020 年 4 月 23 日,Xcode11.4
在我的例子中,我从 TMDB API 获取电影描述文本,它是动态长度的。并且嵌入在VStack中。
真是气死了。即使我设置了 .linelimit(nil),描述文本的行,它仍然有一个限制并最终忽略一些文本 "long decription...".
我在 VStack 中有一些描述文本,我想将其限制为 3 行。我的理解是我用.lineLimit(3)
修饰符修饰Text()
。但是,当我这样做时,一些描述的上限为 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()
}
这是正在发生的事情的图像:
我经历过。
现在,如果您将视图包装在 GeometryReader 中,那么它应该遵守行限制
例如
GeometryReader { _ in
VStack(alignment: .leading) {
...
}
}
答案是下载 Xcode 11.2 BETA。 Xcode App Store 中的 11 GM 也有 .linelimit(nil) 被限制在一行的问题。
您可能还会对 Xcode 11 GM 的这个答案有所帮助:
总结是,在其他构建器中,您需要将 .fixedSize(horizontal: false, vertical: true)
添加到您的 Text() 以使其换行。
2019 年 12 月 12 日 Xcode 11.2.1
不要相信 .lineLimit,使用 frame 设置适当的高度(根据您的字体大小)来包裹您的多行文本。而且,不要使用 .lineSpacing 即使你认为你的高度足够了,SwiftUI 必须有一个真正的 'special' 方法来确定 VStack 高度是否足够以及要显示多少行.
2020 年 4 月 23 日,Xcode11.4
在我的例子中,我从 TMDB API 获取电影描述文本,它是动态长度的。并且嵌入在VStack中。
真是气死了。即使我设置了 .linelimit(nil),描述文本的行,它仍然有一个限制并最终忽略一些文本 "long decription...".