SwiftUI lineLimit显示文字缩放问题
SwiftUI lineLimit显示文字缩放问题

SwiftUI lineLimit显示文字缩放问题

问题复现

在SwiftUI兼容多语种文字时,如果是内容比较长的语种,可以使用lineLimit进行限制,比如下图的德语,限制为3行。

但是,lineLimit有一个副作用,那就是显示内容为一行时,文字内容会被缩放的很小。

这一问题同样发生在iPad上。

可以看到实际的详细信息内容文字很小,而图标下的文字是正常大小。

当隐藏 lineLimit 和 minimumScaleFactor 修饰符后,文字显示正常。

解决方案

当内容无法达到lineLimit限制的行数,或者为1行显示时,minimumScaleFactor 会强制将内容缩放至最小比例,从而显示出现问题。

为避免文字内容被不必要地缩放,可以在特定条件下动态调整 minimumScaleFactor 或在 lineLimit 设定中增加灵活性:

1、设置minHeight高度

Text("Save the desired items, record every savings, and make your wishes come true.")
    .font(.footnote)
    .foregroundColor(.gray)
    .lineLimit(3)
    .minimumScaleFactor(0.3)
    .frame(minHeight: 16)	// 设置最低高度

2、设置fixedSize防止被压缩

VStack(alignment: .leading) {
    Text("Save the desired items, record every savings, and make your wishes come true.")
        .font(.footnote)
        .foregroundColor(.gray)
        .lineLimit(3)
    .minimumScaleFactor(0.3)
        .fixedSize(horizontal: false, vertical: true) // 防止文字水平压缩
}

但是 fixedSize 可能会导致布局发生变化。

3、修改缩放比例

如果视图区域能够容纳比较多的文字内容,可以尝试修改minimumScaleFactor的缩放比例。

例如,设置为0.8,尽可能的完整显示文字内容:

.minimumScaleFactor(0.8) // 最小缩放到 80%

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注