如何在iOS中获得屏幕的尺寸?
目前,我使用:
lCurrentWidth = self.view.frame.size.width;
lCurrentHeight = self.view.frame.size.height;在viewWillAppear:和willAnimateRotationToInterfaceOrientation:duration:中
第一次我得到了整个屏幕的尺寸。第二次我看到没有导航栏的屏幕。
发布于 2011-04-15 22:26:15
如何在iOS中获得屏幕的尺寸?
您发布的代码的问题是,您希望视图大小与屏幕的大小相匹配,正如您所看到的,情况并不总是如此。如果您需要屏幕大小,您应该查看表示屏幕本身的对象,如下所示:
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;拆分视图的更新:在评论中,Dmitry询问:
如何在拆分视图中获取屏幕的大小?
上面给出的代码报告了屏幕的大小,即使在拆分屏幕模式下也是如此。当你使用分屏模式时,你的应用程序的窗口会发生变化。如果上面的代码没有给出您期望的信息,那么就像OP一样,您看错了对象。不过,在这种情况下,您应该查看窗口而不是屏幕,如下所示:
CGRect windowRect = self.view.window.frame;
CGFloat windowWidth = windowRect.size.width;
CGFloat windowHeight = windowRect.size.height;Swift 4.2
let screenRect = UIScreen.main.bounds
let screenWidth = screenRect.size.width
let screenHeight = screenRect.size.height
// split screen            
let windowRect = self.view.window?.frame
let windowWidth = windowRect?.size.width
let windowHeight = windowRect?.size.height发布于 2012-11-22 20:54:40
注意,UIScreen mainScreen也包含状态栏,如果您想要检索应用程序的框架(不包括状态栏),您应该使用
+ (CGFloat) window_height   {
    return [UIScreen mainScreen].applicationFrame.size.height;
}
+ (CGFloat) window_width   {
    return [UIScreen mainScreen].applicationFrame.size.width;
}发布于 2014-12-15 04:14:45
我已经将上面的一些Objective-C答案翻译成了Swift代码。每次翻译都会引用原始答案。
let screen = UIScreen.main.bounds
let screenWidth = screen.size.width
let screenHeight = screen.size.heightfunc windowHeight() -> CGFloat {
    return UIScreen.main.bounds.size.height
}
func windowWidth() -> CGFloat {
    return UIScreen.main.bounds.size.width
}let screenHeight: CGFloat
let statusBarOrientation = UIApplication.shared.statusBarOrientation
// it is important to do this after presentModalViewController:animated:
if (statusBarOrientation != .portrait
    && statusBarOrientation != .portraitUpsideDown) {
    screenHeight = UIScreen.main.bounds.size.width
} else {
    screenHeight = UIScreen.main.bounds.size.height
}let screenWidth = UIScreen.main.bounds.size.width
let screenHeight = UIScreen.main.bounds.size.height
println("width: \(screenWidth)")
println("height: \(screenHeight)")https://stackoverflow.com/questions/5677716
复制相似问题