我开始探索SwiftUI,但我找不到一个简单的方法:我希望视图的高度与父视图的高度成比例(基本上是父视图高度的百分比)。假设我有3个垂直堆叠的视图。我想要:
-
第一个是43%(其父母的身高)高
-
第二个孩子的身高为父母身高的37%
-
最后一个孩子的身高是父母身高的20%
我在WWDC19上观看了这段关于SwiftUI中自定义视图的有趣视频(
https://developer.apple.com/videos/play/wwdc2019/237/
)我明白(如果我错了,请纠正我)基本上一个视图本身没有大小,大小是它的子视图的大小。因此,父视图会询问其子视图的高度。他们的回答是:“你身高的一半!”然后。。。什么布局系统(与我们使用的布局系统不同)如何管理这种情况?
如果您编写以下代码:
struct ContentView : View {
var body: some View {
VStack(spacing: 0) {
Rectangle()
.fill(Color.red)
Rectangle()
.fill(Color.green)
Rectangle()
.fill(Color.yellow)
}
}
}
SwiftUI布局系统将每个视图的大小设置为1/3高,这与我在上面发布的视频是一致的。
可以通过以下方式将矩形包裹在框架中:
struct ContentView : View {
var body: some View {
VStack(spacing: 0) {
Rectangle()
.fill(Color.red)
.frame(height: 200)
Rectangle()
.fill(Color.green)
.frame(height: 400)
Rectangle()
.fill(Color.yellow)
}
}
}
这样,布局系统将第一个矩形的大小设置为200高,第二个矩形的大小设置为400高,第三个矩形的大小设置为适合所有剩余空间。再说一次,这很好。
你不能(用这种方式)指定成比例的高度。