SwiftUI不用VStack也无报错,是否存在无需使用VStack的场景?
写法合规性说明
你的代码完全符合SwiftUI语法规范,在你当前的Xcode 12.4 + iOS 14.4开发环境下可以稳定运行。
- 这个特性是Swift 5.3引入的*Result Builder(原名为Function Builder)*提供的能力:当
View的body属性内直接声明多个并列的子View时,编译器会自动将这些子View隐式封装到一个默认配置的VStack中,默认使用系统标准垂直间距、水平居中对齐的规则,和你手动书写VStack { Text("A"); Text("B") }的运行效果没有任何区别。 - 你的代码的等价显式写法如下:
import SwiftUI struct ContentView: View { var body: some View { VStack { Text("A") Text("B") } } }
无需自定义VStack参数时是否可以省略VStack
完全可以。如果你不需要调整对齐规则、垂直间距,也不需要给VStack添加专属修饰符,直接写并列子View的写法是被官方允许的,不会产生额外性能损耗或者兼容问题,在iOS 14及以上的部署目标下都可以正常使用。
注意:如果你的项目需要兼容iOS 13及更早版本,该写法会触发编译错误,因为iOS 13对应的Swift版本不支持多View的隐式容器封装,必须显式声明VStack等容器组件。
内容的提问来源于stack exchange,提问作者shingo.nakanishi
相关产品推荐
相关产品推荐

