首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在iOS中获取屏幕的宽度和高度?

如何在iOS中获取屏幕的宽度和高度?
EN

Stack Overflow用户
提问于 2011-04-15 21:46:54
回答 18查看 422.3K关注 0票数 535

如何在iOS中获得屏幕的尺寸?

目前,我使用:

代码语言:javascript
运行
复制
lCurrentWidth = self.view.frame.size.width;
lCurrentHeight = self.view.frame.size.height;

viewWillAppear:willAnimateRotationToInterfaceOrientation:duration:

第一次我得到了整个屏幕的尺寸。第二次我看到没有导航栏的屏幕。

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2011-04-15 22:26:15

如何在iOS中获得屏幕的尺寸?

您发布的代码的问题是,您希望视图大小与屏幕的大小相匹配,正如您所看到的,情况并不总是如此。如果您需要屏幕大小,您应该查看表示屏幕本身的对象,如下所示:

代码语言:javascript
运行
复制
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

拆分视图的更新:在评论中,Dmitry询问:

如何在拆分视图中获取屏幕的大小?

上面给出的代码报告了屏幕的大小,即使在拆分屏幕模式下也是如此。当你使用分屏模式时,你的应用程序的窗口会发生变化。如果上面的代码没有给出您期望的信息,那么就像OP一样,您看错了对象。不过,在这种情况下,您应该查看窗口而不是屏幕,如下所示:

代码语言:javascript
运行
复制
CGRect windowRect = self.view.window.frame;
CGFloat windowWidth = windowRect.size.width;
CGFloat windowHeight = windowRect.size.height;

Swift 4.2

代码语言:javascript
运行
复制
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
票数 1.1K
EN

Stack Overflow用户

发布于 2012-11-22 20:54:40

注意,UIScreen mainScreen也包含状态栏,如果您想要检索应用程序的框架(不包括状态栏),您应该使用

代码语言:javascript
运行
复制
+ (CGFloat) window_height   {
    return [UIScreen mainScreen].applicationFrame.size.height;
}

+ (CGFloat) window_width   {
    return [UIScreen mainScreen].applicationFrame.size.width;
}
票数 63
EN

Stack Overflow用户

发布于 2014-12-15 04:14:45

我已经将上面的一些Objective-C答案翻译成了Swift代码。每次翻译都会引用原始答案。

Main Answer

代码语言:javascript
运行
复制
let screen = UIScreen.main.bounds
let screenWidth = screen.size.width
let screenHeight = screen.size.height

##Simple Function Answer

代码语言:javascript
运行
复制
func windowHeight() -> CGFloat {
    return UIScreen.main.bounds.size.height
}

func windowWidth() -> CGFloat {
    return UIScreen.main.bounds.size.width
}

##Device Orientation Answer

代码语言:javascript
运行
复制
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
}

##Log Answer

代码语言:javascript
运行
复制
let screenWidth = UIScreen.main.bounds.size.width
let screenHeight = UIScreen.main.bounds.size.height
println("width: \(screenWidth)")
println("height: \(screenHeight)")
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5677716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档