一种解决方法是使用 alignmentGuide() 的重载方法 alignmentGuide(_:computeValue:),该方法允许我们为特定的视图设置对齐指南,而不会影响其他子视图。
以下是一个示例代码:
import SwiftUI
struct ContentView: View {
var body: some View {
VStack(alignment: .leading) {
VStack {
Text("Hello,")
Text("World!")
}
.alignmentGuide(.leading) { d in
d[.leading]
}
VStack {
Text("Alignment")
Text("Guide")
}
.alignmentGuide(.leading) { d in
d[HorizontalAlignment.center]
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在上述示例中,我们使用 alignmentGuide(.leading) 为两个垂直堆栈设置了不同的对齐指南。第一个堆栈使用 .leading 对齐指南,将其子视图的左边缘与该堆栈的左边缘对齐。第二个堆栈使用 .leading 对齐指南,但通过返回 d[HorizontalAlignment.center] 的值,将其子视图的水平中心与该堆栈的左边缘对齐。
通过使用 alignmentGuide(_:computeValue:) 重载方法,我们可以根据需要为每个子视图设置不同的对齐指南。