我试了一下,没有发现任何错误。
import SwiftUI
struct ContentView: View {
var body: some View {
Text("A")
Text("B")
}
}我认为网络中所有垂直对齐的例子都使用VStack。
我觉得如果不使用VStack,我就会出错。这种写作风格可以吗?
如果我不使用alignment或spacing of VStack,我可以使用这种样式吗?
Xcode: 12.4版本,模拟器: iOS14.4
发布于 2021-08-20 19:41:11
作为Asperi commented,省略VStack是可以的。但是有一个“陷阱”:当使用预览时,每个视图都会有自己的设备。据我所知,这是唯一不同的地方。
struct ContentView: View {
var body: some View {
Text("A")
Text("B")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}结果:

发布于 2021-08-20 11:11:19
在视图生成器中使用VStack并不是必要的。当您特别希望垂直对齐视图时,您需要它,否则视图生成器具有默认的对齐方式。
发布于 2021-08-20 20:21:45
当您返回一个自定义View时,SwiftUI默认情况下会在掩护下返回VStack { CustomView() },因为它包含@ViewBuilder的含义,您的CustomView()允许在它的body中有最多10个可呈现的some View或View,也可以至少有1。还可以在以缓冲代码返回之前显式地更改它。
但是当您返回some View时,SwiftUI只期望一个可呈现的视图类型,它可能是一个VStack、HStack、Circle、Text等等。
因此,回到您的问题,您正在尝试返回一个View,而不是some View,然后就不需要VStack了,只是您想要一些自定义的间隔或对齐。
https://stackoverflow.com/questions/68860939
复制相似问题