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

SwiftUI——如何获取View视图的尺寸,第1张

我们可能在一些情况下需要获取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)")
        }
    }
}

界面如下:

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/994257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存