我有一个像这样的垂直堆栈
VStack
Text(lineA)
.lineLimit(2)
Text(lineB)
Text(lineC)
}
不要问我为什么。我的老板决定他们希望第一个Text
总是有两行,即使 lineA 变量没有字符使 Text 增长到两行。
有没有办法让第一个 Text 呈现如果它是两行并且如果有超过 2 行仍然显示静默?
我可以看到使用框架来做到这一点,一种自杀,将高度固定为可能因设备而异的点值。
有没有更致命的解决方案?
我有一个像这样的垂直堆栈
VStack
Text(lineA)
.lineLimit(2)
Text(lineB)
Text(lineC)
}
不要问我为什么。我的老板决定他们希望第一个Text
总是有两行,即使 lineA 变量没有字符使 Text 增长到两行。
有没有办法让第一个 Text 呈现如果它是两行并且如果有超过 2 行仍然显示静默?
我可以看到使用框架来做到这一点,一种自杀,将高度固定为可能因设备而异的点值。
有没有更致命的解决方案?
这是可能的解决方案(使用 Xcode 12.4 / iOS 14.4 测试)
var body: some View {
VStack {
Text("X\nX").foregroundColor(.clear)
.frame(maxWidth: .infinity)
.overlay(
Text("sdfasdfasdfasd asd f asdf asd f asdf asd fas df ")
// Text("sdfasdfasdfasd asd f asdf asd f asdf asd fas df asdf asd fa sdf asdfasdfasd asdf as df asdfasdf asdf")
, alignment: .top)
Text("lineB")
Text("lineC")
}
}
遵循@Asperi
绝妙的主意,我测试了另一个对我来说效果更好的选项:
var body: some View {
VStack {
Text("asdfasfdasfasfasfafddafas\n")
.lineLimit(2)
.foregroundColor(.black)
.frame(maxWidth: .infinity)
Text("lineB")
Text("lineC")
}
}
这将使它变成 2 行,即使文本只够 1 行,如果文本超过 2 行,将添加 retences。