SwiftUI中Text.lineLimit()行为不一致

时间:2019-06-14 17:45:01

标签: ios swift swiftui

我在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()
        }

这是正在发生的事情的图像:

enter image description here

6 个答案:

答案 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)