我开始探索SwiftUI,但我找不到找到简单方法的方法(然后可能不是那么简单):我希望View具有成比例的高度(基本上是其父代高度的百分比)。假设我有3个垂直堆叠的视图。我想要:
使用旧的自动版式非常简单。我可以将每个视图的高度设置为其父视图的高度,然后将乘数设置为所需的值。
现在使用SwiftUI。我观看了WWDC19中关于SwiftUI(https://developer.apple.com/videos/play/wwdc2019/237/中的自定义视图的一段有趣的视频,并且我理解(如果我错了,请纠正我)基本上一个View本身没有大小,大小就是其大小孩子们。因此,父视图询问其子项的高度。他们的回答是:“身高减半!”然后什么?布局系统(与我们以前使用的布局系统不同)如何处理这种情况?它可以实际处理这种情况吗? (这很常见)。
答案 0 :(得分:3)
import SwiftUI
struct ContentView: View {
var body: some View {
GeometryReader { metrics in
VStack(spacing: 0) {
Color.red.frame(height: metrics.size.height * 0.43).layoutPriority(1)
Color.green.frame(height: metrics.size.height * 0.37)
Color.yellow
}
}
}
}
import PlaygroundSupport
PlaygroundPage.current.liveView = UIHostingController(rootView: ContentView())