[SwiftUI练级-1]--创建Form
许多app要求用户输入一些信息,可能是设置某项属性,或者是选择自己想要的某个选项,等等。SwiftUI 为这种场景专门提供了一个视图类型,称为Form。Form是一个可滚动列表,除了可以包含文本和图像这样的静态控件,也可以包含文本框,开关,按钮这些用户可交互的控件。你可以把一个文本控件包裹起来,来创建一个最简单的Form,就像下面这样:
var body: some View { Form { Text("Hello World") } }
如果你正在使用Xcode的画布,你会发现一个变化:起初“Hello World”是居中展示在一个白色的背景上,当你用Form将它包起来之后,背景变成了浅灰色,并且Hello World跑到左上角。下面是一组数据的列表,就像你在设置应用里看到的那样。
Form { Text("Hello World") Text("Hello World") Text("Hello World") }
实际上,你可以在form里放进任意多你想要的元素,不过如果元素超过10个,SwiftUI会要求你对元素进行分组。举个例子,下面的代码展示了10行文本,这样做没有问题:
Form { Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") }
如果试图像这样直接增加到11行,是不允许的:
Form { Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") Text("Hello World") }
提示: SwiftUI中有一个限制:Form知道如何添加一个、两个、 三个,直到十个元素到自身,但超过十个就不行。这是因为必须有一条界线。实际上,10个子元素的限制在SwiftUI中随处可见。如果你想要往Form里塞超过十个元素,你可以用Group来分组这些元素,让每个分组的子元素数量小于等于10个。
Form {
Group {
Text("Hello World")
Text("Hello World")
Text("Hello World")
Text("Hello World")
Text("Hello World")
Text("Hello World")
}
Group {
Text("Hello World")
Text("Hello World")
Text("Hello World")
Text("Hello World")
Text("Hello World")
}
}
注意:Group实际上并没有改变UI的视觉,只是让你可以解决10个子元素的限制。如果你确实要求Form把元素分成不同的组块,你可以使用Section视图,它会将form拆分成视觉上具体呈现的分组,就像设置app里的做法:
Form {
Section {
Text("Hello World")
}
Section {
Text("Hello World")
Text("Hello World")
}
}
把Form拆分成Section并没有套路或者规范可循,如何做取决于你。
网友评论