©️ OverlookArt
首页 / AppleDeveloper / SwiftUI / Stack Layout

Stack Layout

Stack 视图是 SwiftUI 中最原始的布局容器。使用堆栈将视图集合分组为水平布局或垂直布局,或将它们堆叠在一起。

HStack 将视图以水平方式布局,VStack 将视图以垂直方式布局,ZStack 将视图以堆叠方式布局。

HStack

HStack 可将子视图以水平排列的方式展示。

创建方法:

1init(
2    alignment: VerticalAlignment = .center, // 垂直对其方式 top:顶部对齐 bottom:底部对齐 center:垂直居中
3    spacing: CGFloat? = nil, // 子视图之间的间距
4    @ViewBuilder content: () -> Content // 视图构建器
5)

使用示例:

1var body: some View {
2    HStack(alignment: .top, spacing: 10) {
3        SomeView()
4        SomeView()
5        SomeView()
6    }
7}
Note

HStack 中有大量的子视图,进行加载时,可能会导致性能问题。可以使用 LazyHStack 来替代 HStack,它会按需加载子视图,从而提高性能。

VStack

VStack 可将子视图以垂直排列的方式展示。

创建方法

1init(
2    alignment: HorizontalAlignment = .center, // 水平对其方式 leading:左对齐 trailing:右对齐 center:水平居中
3    spacing: CGFloat? = nil, // 视图之间的间距
4    @ViewBuilder content: () -> Content // 视图构建器
5)

使用示例:

1VStack(alignment: .leading, spacing: 16) {
2    SomeView()
3    SomeView()
4    SomeView()
5}

ZStack

ZStack 可将子视图以堆叠方式展示

创建方法

1init(
2    alignment: Alignment = .center, //对齐方式     
3    @ViewBuilder content: () -> Content //视图构建器
4)

Alignment 对齐方式枚举

  • center: 居中对齐
  • leading: 左对齐
  • trailing: 右对齐
  • top: 上对齐
  • bottom: 下对齐
  • topLeading: 左上对齐
  • topTrailing: 右上对齐
  • bottomLeading: 左下对齐
  • bottomTrailing: 右下对齐

使用示例:

1ZStack(alignment: .topLeading) {
2    Circle().frame(width: 200, height: 200)
3    Circle().frame(width: 150, height: 150).foregroundColor(.accentColor)
4    Circle().frame(width: 100, height: 100).foregroundColor(.blue)
5    Circle().frame(width: 50, height: 50).foregroundColor(.red)
6}
7.border(Color.green, width: 1)