强制将HStack中的视图扩展到特定大小

时间:2020-08-14 17:14:39

标签: swiftui

我在HStack中有三个视图。我希望中心视图可以扩展到某个特定尺寸,即使其内容对于该尺寸而言太小。左视图和右视图应填充任何剩余的空间,并减小到最小宽度。 / p>

iPad:

iPad View

视图B(灰色)已扩展到最大尺寸。视图A和C占用了剩余空间。

iPhone:

ideal view 2

视图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)
    }
}

它产生以下输出:

actual output

在这种情况下,视图B的内容不够宽,因此不会展开以填充其空间。

要重述:

  • B应该尽可能宽,最大(在此示例中为500)
  • A和C应该填充任何剩余的空间,最小到最小大小(在此示例中为20)。

如何强制B将其宽度增加到最大?

1 个答案:

答案 0 :(得分:0)

只给视图B更高的优先级(默认为0)。经过Xcode 12测试。

demo

Text("B")
    .frame(minWidth: 0.0, maxWidth: 500.0, maxHeight: .infinity, alignment: .center)
    .background(Color.secondary)
    .layoutPriority(1)           // << here !!