有没有办法动态覆盖单个元素中HStack的对齐属性?

Consider this scenario

  1. 有一位家长HStackalignment = bottom
  2. HStack内有3个不同大小的元素
  3. 我希望第三个元素对齐到HStack的顶部.此对齐方式与Hstack的底部对齐方式不同
var body: some View {
    HStack(alignment: .bottom) {
        Rectangle()
            .fill(.yellow)
            .frame(height: 100)

        Rectangle()
            .fill(.blue)
            .frame(height: 20)

        // I want this to go to the top of the HStack
        Rectangle()
            .fill(.green)
            .frame(height: 50)
    }
    .background {
        Color.red
    }
}

我试图让HStack尊重HStack的最高高度,只是改变最后一个元素的对齐方式.

我曾try 将第三个元素包装在另一个堆栈中,但只有在指定等于父级子级中最高高度maxHeight的情况下才有效. 这意味着这些矩形必须知道它们的sibling 元素.

HStack {
    Rectangle()
        .fill(.green)
        .frame(height: 50)
}
.frame(maxHeight: 100, alignment: .top)

推荐答案

你可以试试这个:

 var body: some View {
    HStack(alignment: .bottom) {
        Rectangle()
            .fill(.yellow)
            .frame(height: 100)
        
        Rectangle()
            .fill(.blue)
            .frame(height: 20)
        
        VStack {
            Rectangle()
                .fill(.green)
                .frame(height: 50)
            Spacer()
        }
    }
    .background {
        Color.red
    }
}

如果出于某种原因,您想要限制Spacer可以占用的空间范围,您可以按照以下示例添加修饰符:

VStack {
   Rectangle()
     .fill(.green)
     .frame(height: 50)
   Spacer()
     .frame(minHeight: 10, maxHeight: 50)
}

Swift相关问答推荐

{Singleton类}类型的值没有成员$showegView'

操作员如何点逻辑非(.!)在Swift工作?

在swift静态var扩展中,如何或可以访问和返回具体类?

日期格式yyyyyy—MM—dd hh:mm:ss +0000到dd MMM,以swift格式表示""""

体积单位从夸脱转换为杯似乎关闭了

如何在SWIFT中轻松格式化公制和英制使用的UnitVolume

Swift C外部实现的Task / Future类类型

如何设置两个不同的视图模型以在我的SwiftUI应用程序中使用相同的数据源?

如何在DATE()中进行比较

仅当单击UIButton时才调用计时器函数

带有可选字符串作为键路径的 SwiftUI iOS16 表

有没有一种方法可以访问封闭实例ObservableObject以从属性包装器中的任何位置调用objectWillChange.send()

为 SwiftUI 中的属性提供默认值

如何在 SwiftUI 中获取视图的位置

Vapor - 流利的,将对象保存到 PostgreSQL

Swift 函数 vs 惰性变量 vs 计算(computed)属性 - 区别?

仅在 Swift 中创建 Setter

如何快速截取 UIView 的屏幕截图?

如何使用 swift 在 tableview 中填充两个不同数组的两个部分?

Swift 的 JSONDecoder 在 JSON 字符串中有多种日期格式?