如何在SwiftUI中获取当前窗口大小(或基本上是iOS上的屏幕大小)?[副本]

zf9nrax1  于 2023-06-21  发布在  Swift
关注(0)|答案(1)|浏览(243)

此问题已在此处有答案

How to get Height and Width of View or Screen in SwiftUI(2个答案)
6天前关闭
我需要获取当前SwiftUI视图所在窗口的大小。
我知道有一个UIScreen.main.bounds解决方案,但它说它将在未来的版本中被弃用。当我尝试UIApplication.shared.keyWindow时,它说它在iOS 13中已弃用,与UIApplication.shared.windows相同,除了它在iOS 15中已弃用。
弃用消息建议我使用UIWindowScene来获取当前窗口,但似乎访问当前窗口场景的唯一方法是在UIView
有没有办法在SwiftUI中获取当前窗口的大小(希望不涉及UIKit)?

elcex8rz

elcex8rz1#

你可以使用GeometryReader,它不是关于屏幕大小,而是它覆盖的区域大小。因此,如果你在视图层次结构中首先添加它,你可以得到屏幕的大小。

struct ContentView: View {
    var body: some View {
        GeometryReader { proxy in
            let size = proxy.size // -> screen size
            VStack {
                Image(systemName: "globe")
                    .imageScale(.large)
                    .foregroundColor(.accentColor)
                Text("Hello, world!")
            }
        }
    }
}

GeometryReader涵盖了它的所有可用空间,因此您可以使用来获取屏幕大小。

相关问题