SwiftUI 如何使用对齐和间距自定义堆栈布局?

14 min read

SwiftUI 提供了许多内置的堆栈布局,如 HStack、VStack 和 ZStack。这些堆栈布局具有一些内置的对齐和间距选项,但如果您需要更多的自定义,您可以通过下面的示例代码实现:

struct CustomStackLayout<Content: View>: View {
    let alignment: HorizontalAlignment
    let spacing: CGFloat
    let content: () -> Content
    
    init(alignment: HorizontalAlignment = .center, spacing: CGFloat = 0, @ViewBuilder content: @escaping () -> Content) {
        self.alignment = alignment
        self.spacing = spacing
        self.content = content
    }
    
    var body: some View {
        HStack(alignment: alignment, spacing: spacing) {
            content()
        }
    }
}

// 在使用时,您可以这样传递对齐和间距选项:
CustomStackLayout(alignment: .leading, spacing: 10) {
    Text("Hello")
    Text("World")
}

在这个例子中,我们创建了一个名为 CustomStackLayout 的自定义布局,它接受一个水平对齐和间距选项。我们在 HStack 内部呈现了传递给该视图的内容,并将其绑定到对齐和间距选项的值。现在,您可以在项目中使用 CustomStackLayout 作为自定义布局,并传递对齐和间距选项来自定义您的堆栈布局。