为啥 [UIScreen mainScreen].bounds] 没有返回全屏尺寸?

Posted

技术标签:

【中文标题】为啥 [UIScreen mainScreen].bounds] 没有返回全屏尺寸?【英文标题】:Why [UIScreen mainScreen].bounds] is not returning full screen size?为什么 [UIScreen mainScreen].bounds] 没有返回全屏尺寸? 【发布时间】:2013-07-19 16:14:00 【问题描述】:

我有一个在新 iPhone 5 视网膜宽屏设备之前创建的应用程序。 现在我正在尝试支持这种高清宽屏。

我调整了主 ViewController 和主窗口 XIB 文件,以便将它们设置为 Autolayout。我可以验证通过 IB 显示的宽度/高度显示为 320 x 568。

但是,当我在模拟器中运行时,我可以看到高度仍然是 480。 我用来打印高度(和宽度)的代码在主视图控制器的 viewWillAppear 方法中:

[UIScreen mainScreen].bounds]

为什么 size.height 还是 480 而不是 568?

【问题讨论】:

您是否在标签栏控制器中显示视图? 显示此链接以获取iphone 5 屏幕高度 [单击此链接以获得支持][1] [1]:***.com/questions/12395200/… @alvinfromDiaspar 显示我的答案并搜索该链接。 你得到了你的问题的完整说明。 【参考方案1】:

值得注意的一点 - 在新的 Xcode 中,您必须将此图像文件 Default-568h@2x.png 添加到资产中

【讨论】:

【参考方案2】:

您必须将 iPhone 5 Launch 图像 (Default-568h@2x.png) 添加到您的项目中。

568 点高的启动图像告诉 ios 以 4" 模式启动您的应用。如果您没有此图像,您的应用将被视为 3.5" 应用。即使它是 4" 兼容的。

【讨论】:

谢谢大家,为此浪费了半个小时:) 哇,一个与文件资源无关但与硬件有关但依赖资源工作的 API!哇,这有多糟糕? 我有这张图片,我的应用仍然以 320 像素显示。

以上是关于为啥 [UIScreen mainScreen].bounds] 没有返回全屏尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

UIScreen.mainScreen().nativeBounds.height 无法使用 Xcode 7/Swift 2,目标 iOS7

横向模式的“UIScreen mainScreen] applicationFrame]”

iPad:[UIScreen mainScreen].bounds 返回错误的坐标

[UIScreen mainScreen].bounds 与 [UIApplcation sharedApplication].keyWindow.bounds?

[UIScreen mainScreen].scale 对于非 Retina iPad 总是返回 2

[UIScreen mainScreen].bounds.size 在 iOS8 中是不是变得依赖于方向?