我开始探索SwiftUI,但是我找不到一个简单的方法:我想让一个视图有比例高度(基本上是其父视图高度的百分比)。假设我有3个垂直堆叠的视图。我想要:
- 第一个视图的高度为其父视图高度的43%
- 第二个视图的高度为其父视图高度的37%
- 最后一个视图的高度为其父视图高度的20%
我看了这个有趣的WWDC19自定义视图的视频(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,第三个矩形的高度自适应剩余空间。但是,以这种方式无法指定比例高度。