- Form: 会让一些控件有一些特殊的外观变化,更好的是,SwiftUI的几个部分自动适应放置在表单中 - 它们的外观和行为发生变化,因此它们与其他输入控件组一起工作得更好。 Form 组件使用分组 List 来表示 cell 中的子控件。通过将布局包裹在 Form 中,SwiftUI 能够改变每个元素的可视化外观。你可以用 VStack 替换 Form,来看看二者有何不同。Picker 的外观也不一样。它用另外一个列表窗口来显示内容。我们无需做任何事情,一切都被封装得好好的。这就是声明式编程的真正威力。每个组件的外观都会有不同的适配方式,我们可以用其它容器来包裹它们,就可以轻易地改变它们的外观。
Form 组件将一个复杂的表单布局分成多个 section 并使用不同的数据源。
var body: some View {
Form {
Text("Hello World")
}
}
当文本控件被Form包裹之后,起初“Hello World”是居中展示在一个白色的背景上,当你用Form将它包起来之后,背景变成了浅灰色,并且Hello World跑到左上角。
-
可以用Group来分组这些元素,让每个分组的子元素数量小于等于10个。,Group实际上并没有改变UI的视觉,只是让你可以解决10个子元素的限制。
-
alignmentGuide 可以自定义修改系统默认的一些属性值 lastTextBaseline 默认是 View 的最底部,所以我们才能达到我们想要的对齐效果,想要把图片往下移一点点,想要的效果如下
HStack(alignment: .lastTextBaseline) {
Text("Delicious")
.font(.caption)
Image("20x20_avocado")
.alignmentGuide(.lastTextBaseline) { d in
d[.bottom] * 0.927
}
Text("Avocado Toast")
}
.lineLimit(1)