如何在swift中获取window大小(包括iPad分屏)
How to get window size in swift (including iPad split screen)
我想获取 window 边界作为 CGRect
对象。
这是我当前的代码:
let screenSize : CGRect = self.view.window?.frame
我在网上找到这段代码,但有时 screenSize
是零。
还有其他选择吗?
您可以通过输入分别获取高度和宽度:
let screenSize = UIScreen.main.bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height
我找到了答案
let screenSize : CGRect = self.view.frame
UIView
有一个名为 window
的 属性,在将视图添加到 window 之前,它被称为 nil
。当 window
属性 不是 nil
时获取 frame
。所以,在下面的实验中,只有在输入viewWillLayoutSubviews
时,view.window
的值才不是nil
。
https://eunjin3786.tistory.com/96
抱歉,我找不到合适的英文示例。本次实验作者在view.window
不是nil
的时候标注了蓝色标题。
if let window = UIApplication.shared.windows.filter({ [=10=].isKeyWindow }).first {
let screenFrame = window.frame
}
您可以从 screenFrame
获取尺码
iOS 15 弃用了上述解决方案。这是一个新的语法,它应该是最新的、安全的并且可以在分屏上实际工作 iPad。
let windowSize = UIApplication.shared.connectedScenes
.compactMap({ scene -> UIWindow? in
(scene as? UIWindowScene)?.keyWindow
})
.first?
.frame
.size
我想获取 window 边界作为 CGRect
对象。
这是我当前的代码:
let screenSize : CGRect = self.view.window?.frame
我在网上找到这段代码,但有时 screenSize
是零。
还有其他选择吗?
您可以通过输入分别获取高度和宽度:
let screenSize = UIScreen.main.bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height
我找到了答案
let screenSize : CGRect = self.view.frame
UIView
有一个名为 window
的 属性,在将视图添加到 window 之前,它被称为 nil
。当 window
属性 不是 nil
时获取 frame
。所以,在下面的实验中,只有在输入viewWillLayoutSubviews
时,view.window
的值才不是nil
。
https://eunjin3786.tistory.com/96
抱歉,我找不到合适的英文示例。本次实验作者在view.window
不是nil
的时候标注了蓝色标题。
if let window = UIApplication.shared.windows.filter({ [=10=].isKeyWindow }).first {
let screenFrame = window.frame
}
您可以从 screenFrame
iOS 15 弃用了上述解决方案。这是一个新的语法,它应该是最新的、安全的并且可以在分屏上实际工作 iPad。
let windowSize = UIApplication.shared.connectedScenes
.compactMap({ scene -> UIWindow? in
(scene as? UIWindowScene)?.keyWindow
})
.first?
.frame
.size