在HStack中填充子级的高度?

问题描述 投票:0回答:1

在这篇post中已经回答了有关 Android Compose 的类似问题。我想知道 SwiftUI 是否也可以做同样的事情?

示例:

HStack {
    VStack {
        SomeMoreContentWithUnknownHeight()
    }
    .frame(width: geometry.size.width * 0.8)
    Image("User")
        .resizable()
        .scaledToFit()
        .frame(width: geometry.size.width * 0.2)
}
.frame(minHeight: 100)

HStack 的高度应该不固定,但如果它的子节点这样做的话,它应该增长。如果一个孩子比另一个高,它如何在不影响其高度的情况下填充父母的高度?

我有什么:

What I have

预期结果:

Expected

ios swift xcode swiftui
1个回答
0
投票

HStack
自动采用最高孩子的身高。

但是,您的问题似乎更关心

HStack
内的孩子的高度,并且您的代码示例在这个位置有一个图像。假设您实际上想要缩放图像以填充(而不是缩放以适合,这就是代码的实现方式),那么一种方法是在
HStack
上叠加显示图像:

  • 删除在
    .frame
    上设置固定高度的
    HStack
    修改器。
  • Image
    内的
    HStack
    替换为
    Spacer
  • 使用
    alignment: .trailing
    应用叠加层。
  • 叠加层会自动采用其所应用到的视图的框架,因此它将采用第一个子级的高度。
  • 缩放图像以填充,然后剪辑到框架的边界。
HStack {
    VStack {
        SomeMoreContentWithUnknownHeight()
    }
    .frame(width: geometry.size.width * 0.8)
    Spacer()
}
.overlay(alignment: .trailing) {
    Image("User")
        .resizable()
        .scaledToFill()
        .frame(width: geometry.size.width * 0.2)
        .clipped()
}

Screenshot

© www.soinside.com 2019 - 2024. All rights reserved.