如果没有足够的空间,我希望在HStack的末尾截断和隐藏项目。
例如。
struct ExampleView: View {
var body: some View {
HStack {
Text("Lorem")
Text("ipsum")
Text("dolor")
Text("sit")
Text("amet")
Text("consectetur")
Text("adipiscing")
}
}
}
struct ExampleView_Previews: PreviewProvider {
static var previews: some View {
ExampleView()
.previewLayout(.fixed(width: 300, height: 100))
}
}这就产生了:

相反,我希望将VStack中的所有项目保持在理想的宽度。但是,当我们耗尽空间时,我想截断下一个,然后隐藏其余的。
例如截断“圣洁”和隐藏“绝食”。

我怎样才能达到这个结果呢?
发布于 2022-08-11 05:24:10
一种可能的方法是使用布局优先级,并将数据从视图中分离出来,以使这更简单。
这里是简化的演示。用Xcode 13.4 / iOS 15.5测试

let data = ["Lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing"]
var body: some View {
HStack {
ForEach(data.indices, id: \.self) {
Text(data[$0])
.layoutPriority(-Double($0)) // << here !!
}
}
.lineLimit(1) // << here !!
}发布于 2022-08-10 23:52:42
我认为这是你唯一的方法,你可以用这样的方式做一串你想要展示的东西:
struct ContentView: View {
var body: some View {
Text("Lorem ipsum dolor sit amet consectetur adipiscing")
.lineLimit(1)
.frame(width: 300)
}
}https://stackoverflow.com/questions/73313668
复制相似问题