SwiftUI——如何获取View视图的尺寸

我们可能在一些情况下需要获取SwiftUI的一个View的尺寸,我们可以用以下方法获取:

.overlay(GeometryReader { geo -> AnyView in
                    DispatchQueue.main.async{
                        self.displayWidth = geo.size.width
                        self.displayHeight = geo.size.height
                    }
                    return AnyView(EmptyView())
            })

让我们来举个例子!我们来获取一个Text的View的尺寸以及其他参数:

struct ContentView: View {
    @State private var displayWidth: CGFloat = 0
    @State private var displayHeight: CGFloat = 0
    @State private var widthAndHeight = ""
    var body: some View {
        VStack {
            Text("Hello, world!")
                .padding()
                .overlay(GeometryReader { geo -> AnyView in
                    DispatchQueue.main.async{
                        displayWidth = geo.size.width
                        displayHeight = geo.size.height
                        widthAndHeight = geo.size.debugDescription
                    }
                    return AnyView(EmptyView())
            })
            Text("宽度:\(displayWidth)")
            Text("高度:\(displayHeight)")
            Text("宽高:\(widthAndHeight)")
        }
    }
}

界面如下:
SwiftUI——如何获取View视图的尺寸_第1张图片

这里需要注意的是:这里的尺寸是包括padding的,也就是说,附加在这个View视图上的东西的尺寸超过本身尺寸的话,也会计算在内。

你可能感兴趣的:(Swift/SwiftUI,swift,swiftui,ios)