SwifUI:如何根据另一个元素的位置对齐元素的填充值

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

如何在SwiftUI中对齐VStack中包含的两个不同HStack中的元素?

这是我想做的-

VStack {
   HStack {
     element A - Text
     element B - Image 
     element C - Image
   }
   HStack {
     element D - Text
     element E - Text
   }
}

如何根据第一HStack中“文本元素A”的中心轴对齐第二HStack中的“文本元素D”?

如果我在所有封闭的VStack上使用.center对齐方式,它将使HStack对齐而不是将各个元素相互对齐

提前感谢!

xcode swiftui vertical-alignment ios13
1个回答
0
投票

我向您显示了以下示例:

                         extension HorizontalAlignment {
                            private enum MyAlignment: AlignmentID {
                                static func defaultValue(in d: ViewDimensions) -> CGFloat {
                                    return d[.trailing]
                                }
                            }
                            static let myAlignment = HorizontalAlignment(MyAlignment.self)
                        }



                        VStack(alignment: .myAlignment) {
                           HStack {
                             (element A).alignmentGuide(.myAlignment) { v in  v[HorizontalAlignment.center]}
                             (element B)
                             (element C)
                           }
                           HStack {
                             (element D)
                             (element E)
                            }.alignmentGuide(.myAlignment) { v in v[.leading]}
                        }
© www.soinside.com 2019 - 2024. All rights reserved.