【问题标题】:Correct way to get the screen size on iOS, after UIScreen.main deprecation在 UIScreen.main 弃用后,在 iOS 上获取屏幕尺寸的正确方法
【发布时间】:2022-11-17 01:25:12
【问题描述】:

我总是使用 UIScreen.main.bounds.size 来获取 iOS 上的屏幕尺寸并且工作正常。

现在(我相信在 iOS 16 中)当我尝试使用 UIScreen 的“主”实例访问屏幕大小时,会显示一条警告:

“main”将在未来的 iOS 版本中被弃用:使用 UIScreen 实例 通过上下文找到:即 view.window.windowScene.screen

所以我的问题是: 获取屏幕尺寸的正确方法是什么?为简单起见,假设我们使用的是 iPhone,因此只有一个屏幕可用。谢谢

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

    试试这个:

    let height = view.bounds.size.height
    let width = view.bounds.size.width
    print("Width size:", view.bounds.size.width, "Width size:", view.bounds.size.height)
    

    输出 iPhone 14 pro

    output: Width size: 393.0 Height size: 852.0
    

    【讨论】:

    • 我知道,正如我在问题中所写,您可以使用 UIScreen.main.bounds 但现在已弃用。
    • 我更新我的答案
    【解决方案2】:

    在此处使用 GeometryReader - 文档:https://developer.apple.com/documentation/swiftui/geometryreader。用法示例:

    struct MyTestView: View {
        
        var body: some View{
            VStack{
                GeometryReader{ geo in
                    VStack {
                        Text("Width: (geo.size.width)")
                        Text("Height: (geo.size.height)")
                    }
                }
            }
        }
    }
    

    geo.size 是一个CGSize - 文档在这里:https://developer.apple.com/documentation/corefoundation/cgsize

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      相关资源
      最近更新 更多