Swiftui 强制HStack中的视图扩展到特定大小
我在Swiftui 强制HStack中的视图扩展到特定大小,swiftui,Swiftui,我在HStack中有三个视图。我希望中心视图可以扩展到某个大小,即使它的内容对于该大小来说太小。左视图和右视图应该填充所有剩余空间,直到最小宽度 iPad: 视图B(灰色)已扩展到其最大尺寸。视图A和C占用了剩余的空间 iPhone: 视图A和C(黄色和绿色)已缩小到最小宽度。视图B(灰色)填充空间的其余部分 这段代码并没有达到目的: var body: some View { HStack { Text("A") .fra
HStack
中有三个视图。我希望中心视图可以扩展到某个大小,即使它的内容对于该大小来说太小。左视图和右视图应该填充所有剩余空间,直到最小宽度
iPad:
视图B(灰色)已扩展到其最大尺寸。视图A和C占用了剩余的空间
iPhone:
视图A和C(黄色和绿色)已缩小到最小宽度。视图B(灰色)填充空间的其余部分
这段代码并没有达到目的:
var body: some View {
HStack {
Text("A")
.frame(minWidth: 20.0, maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
.background(Color.yellow)
Text("B")
.frame(minWidth: 0.0, maxWidth: 500.0, maxHeight: .infinity, alignment: .center)
.background(Color.secondary)
Text("C")
.frame(minWidth: 20.0, maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
.background(Color.green)
}
}
它产生以下输出:
在本例中,视图B的内容不够宽,因此无法扩展以填充其空间
重申:
- B应尽可能宽,最大宽度为(本例中为500)
- A和C应该填充剩余的任何空间,直到最小大小(本例中为20)
如何强制B将其宽度增加到最大值?只需给视图B更高的优先级(默认值为0)。用Xcode 12测试
文本(“B”)
.frame(最小宽度:0.0,最大宽度:500.0,最大高度:。无穷大,对齐方式:。中心)
.背景(颜色.次要)
.layoutPriority(1)/只需为视图B提供更高的优先级(默认值为0)。用Xcode 12测试
文本(“B”)
.frame(最小宽度:0.0,最大宽度:500.0,最大高度:。无穷大,对齐方式:。中心)
.背景(颜色.次要)
.优先次序(1)//
Text("B")
.frame(minWidth: 0.0, maxWidth: 500.0, maxHeight: .infinity, alignment: .center)
.background(Color.secondary)
.layoutPriority(1) // << here !!