1 布局基础

原文链接: https://developer.apple.com/documentation/swiftui/layout-fundamentals

1 布局基础

在栈、网格等内置布局容器中排列视图。

概述

使用布局容器来排列用户界面中的各个元素。栈和网格会随内容或界面尺寸的变化而更新并调整其包含的子视图位置。你可以把布局容器嵌套进其他布局容器,嵌套深度不限,从而实现复杂的布局效果。

要微调用布局容器视图构建的布局的位置、对齐方式以及其他方面,请参阅 布局调整。要定义自定义布局容器,请参阅 自定义布局。关于设计指导,请参阅 Human Interface Guidelines 中的 布局。

选择布局

在一维中静态排列视图

  • 用栈视图构建布局 — 用基础容器视图组合出复杂的布局。
  • HStack — 一种把其子视图排成水平一行的视图。
  • VStack — 一种把其子视图排成垂直一列的视图。

在一维中动态排列视图

在二维中静态排列视图

  • Grid — 一种把其他视图排列成二维布局的容器视图。
  • GridRow — 二维网格容器中的水平一行。
  • gridCellColumns(_:) — 让充当网格单元格的视图跨越指定的列数。
  • gridCellAnchor(_:) — 为充当网格单元格的视图指定自定义对齐锚点。
  • gridCellUnsizedAxes(_:) — 请求网格布局不要在指定轴向上给该视图提供额外尺寸。
  • gridColumnAlignment(_:) — 覆盖该视图所在网格列默认的水平对齐方式。

在二维中动态排列视图

  • LazyHGrid — 一种把其子视图排列成向水平方向延伸的网格、并按需创建项目的容器视图。
  • LazyVGrid — 一种把其子视图排列成向垂直方向延伸的网格、并按需创建项目的容器视图。
  • GridItem — 对惰性网格中某一行或某一列的说明。

层叠视图

自动选择适配的布局

  • ViewThatFits — 一种通过提供第一个能够放下的子视图来适应可用空间的视图。

分隔符

  • Spacer — 一段灵活的空间,它会沿所属栈布局的主轴扩展;如果不包含在栈中,则在两个轴向上扩展。
  • Divider — 一种可用于分隔其他内容的视觉元素。