我希望包含 2222... 和 333... 的Text("111")高度相同VStack。
struct Test7: View {
var body: some View
{ HStack (alignment: .top) {
Text( "111") // Shall have equal Height
.background(Color.red)
VStack(alignment: .leading){. // of this VStack
Text("2222222")
.background(Color.gray)
Text("333333333")
.background(Color.blue)
}
}
.background(Color.yellow)}
}
Run Code Online (Sandbox Code Playgroud)
我试过,GeometryReader但没有让它工作
这是使用的可能方法 .alignmentGuide

struct Test7: View {
@State
private var height: CGFloat = .zero // < calculable height
var body: some View {
HStack (alignment: .top) {
Text( "111")
.frame(minHeight: height) // in Preview default is visible
.background(Color.red)
VStack(alignment: .leading) {
Text("2222222")
.background(Color.gray)
Text("333333333")
.background(Color.blue)
}
.alignmentGuide(.top, computeValue: { d in
DispatchQueue.main.async { // << dynamically detected - needs to be async !!
self.height = max(d.height, self.height)
}
return d[.top]
})
}
.background(Color.yellow)
}
}
Run Code Online (Sandbox Code Playgroud)
注意:真实结果仅在 LivePreview 中可见,因为高度是动态计算的,并在下一个渲染周期分配以避免在@State 上发生冲突。
| 归档时间: |
|
| 查看次数: |
1895 次 |
| 最近记录: |