所以我只想做一些非常简单的事情,就是让一个图像占用其容器大小的一半,另一半是Vstack。
我目前这样做是为了迫使两个视图都使用maxWidth来占用尽可能多的空间:.无穷大,因此它们最终占用等量的空间:
struct ContentView: View {
var body: some View {
HStack {
Image("landscape")
.resizable()
.scaledToFill()
.frame(maxWidth: .infinity, maxHeight: 170)
VStack {
Text("Test")
Text("Test 2")
}
.frame(maxWidth: .infinity)
}
.frame(maxWidth: .infinity, maxHeight: 170)
.background(Color.red)
.padding()
}
}
但可悲的是,结果却很糟糕:
有什么提示吗?我看到GeometryReader在这里可能会派上用场,但似乎会把我的观点一直推到顶部,最终得到不想要的结果。
1条答案
按热度按时间oaxa6hgo1#
你需要给
HStack
加上一个fixedSize()
修饰符,并保持它垂直于true。您可以在这里阅读更多关于fixedsize()的信息
现在,您的
HStack
将如下所示