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 !!