在SwiftUI中,如果你想要使一个视图与另一个具有动态大小的视图大小相同,你可以使用GeometryReader
来获取目标视图的尺寸,并将这些尺寸应用到另一个视图上。以下是一个简单的示例,展示了如何实现这一点:
import SwiftUI
struct ContentView: View {
var body: some View {
GeometryReader { geometry in
VStack {
// 目标视图,它的大小是动态的
DynamicSizeView()
.frame(width: geometry.size.width / 2, height: geometry.size.height / 2)
// 要与目标视图大小相同的视图
SameSizeView()
.frame(width: geometry.size.width / 2, height: geometry.size.height / 2)
}
}
}
}
struct DynamicSizeView: View {
var body: some View {
Text("我是动态大小的视图")
.padding()
.background(Color.blue)
.cornerRadius(10)
}
}
struct SameSizeView: View {
var body: some View {
Text("我与上面的视图大小相同")
.padding()
.background(Color.red)
.cornerRadius(10)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在这个例子中,DynamicSizeView
是一个具有动态大小的视图,它的大小取决于其内容。SameSizeView
是我们想要与 DynamicSizeView
大小相同的视图。通过将这两个视图都放在 GeometryReader
中,并使用相同的尺寸参数,我们可以确保 SameSizeView
与 DynamicSizeView
的大小相同。
GeometryReader
和frame
。frame
的参数或使用Spacer
来调整空间分配。通过这种方式,你可以确保在SwiftUI中两个视图的大小保持一致,无论它们的内容如何变化。
领取专属 10元无门槛券
手把手带您无忧上云