我正在使用类似卡片的视图,并且我基本上想知道容纳元素所需的最小高度,然后在其周围添加边框。
这变得很困难,因为 VStack 和 HStack 似乎想要占用尽可能多的空间,所以我需要手动插入 a.frame(...)
来强制它工作,但这使得它非常不灵活。
在图片中,我突出显示了VStack
超出 48px 帧高度约束的过度填充。
代码
var body: some View {
HStack(spacing: 0) {
Image("cocktail")
.resizable()
.scaledToFit()
.padding(Size.Spacing.unit * 2)
.background(self.color)
.cornerRadius(8)
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(self.color)
)
HStack(spacing: 0) {
VStack(alignment: .leading) {
Text("Negroni").font(.headline)
Spacer()
HStack {
Tag(name: "bitter")
Tag(name: "sweet")
Tag(name: "strong")
}
}
.padding(.leading, 10)
Spacer()
}
}
.padding(Size.Spacing.unit * 2)
.frame(height: 48.0)
}