gpt4 book ai didi

具有相同高度的 SwiftUI HStack

转载 作者:行者123 更新时间:2023-12-04 14:45:20 28 4
gpt4 key购买 nike

我想要 Text("111")具有与 VStack 相同的高度包含 2222... 和 333....

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)}
}

我尝试使用 GeometryReader但没有让它工作

最佳答案

这是使用 .alignmentGuide 的可能方法
demo

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)
}
}
注意:真实结果仅在 LivePreview 中可见,因为高度是动态计算的,并在下一个渲染周期分配以避免在@State 上发生冲突。

关于具有相同高度的 SwiftUI HStack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60345538/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com