如何防止垫片使VStack贪婪地增长到不必要的程度?

时间:2019-11-19 19:33:19

标签: swift layout swiftui

我大概有:

var body: some View
{
    HStack(alignment: .top) {

        AvatarView()

        MessageBubble()

        if message.isDeleted != true
        {
            VStack {
                Button(action: {
                    // ...
                }) {
                    Image(systemName: "chevron.down")
                }
                Spacer() // THIS SPACER
                Button(action: {
                    // ...
                }) {
                    Text("?")
                }
            }
        }
    }
}

HStack~'s height is dictated by the size MessageBubble which is always taller than its AvatarView and VStack的兄弟姐妹。

问题是当我在Spacer内添加VStack时,整个HStack会难以置信地增长。 Spacer是“贪婪”的,它使一切无限制地增长。 我确实想在VStack的最上方有一个按钮,而在MessageBubble的最底部有一个按钮。

我如何使它增长到不超过MessageBubble

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您会期望像这样(元素对齐)

subviews alighnment

这里是演示代码(彩色矩形框在这里并不重要,大小仅用于演示,您可以将视图放在那里)

*.iml
..
..
/build