与其他内容一起放入HStack时,文本只有一行(SwiftUI列表)

时间:2019-09-08 01:23:51

标签: swiftui swiftui-list

im试图显示项目列表。每行应在左侧包含特定颜色的条纹和标题。该标题有时超过一行,但仅显示为一行和“ ...”。当我删除条纹时,它显示为多行文本。我已附上代码和两张图片进行比较

这里是我的代码:

HStack {
    Rectangle()
        .foregroundColor(poll.outcome ? .green : .red)
        .frame(width: 3)
    VStack {
        Text(poll.poll.title!).font(.headline)
            .lineLimit(2)
    }
}

这是没有矩形的外观: Without Rectangle

以及矩形: Without Rectangle

2 个答案:

答案 0 :(得分:0)

SwiftUI现在有一些错误,它是其中一个,您可以检出some discussion on this answer

尽管它可以在我的机器上运行,但是如果您在调整元素大小方面遇到任何麻烦,您可以使用import subprocess subprocess.call("./getInfo.sh", shell=True) 作为解决方法,直到Apple修复所有SwiftUI错误为止。

在这种情况下,您可以像这样在两个间隔符之间包裹文本:

Spacer

答案 1 :(得分:0)

在List或ScrollView中,SwiftUI引擎将压缩回文本区域。 .lineLimit(x)为您提供最大的行,而不是最小的;) 为确保引擎不会缩小文本高度并达到最大限制,请添加.fixedSize(水平:false,垂直:true),如下所示

HStack {
        Rectangle()
            .foregroundColor(.red)
            .frame(width: 3)
        VStack {
            Text("line1\nline2\nline3").font(.headline)
                .lineLimit(2)
                .multilineTextAlignment(.leading)
                .fixedSize(horizontal: false, vertical: true)
        }
    }