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

Posted

技术标签:

【中文标题】横向模式的“UIScreen mainScreen] applicationFrame]”【英文标题】:"UIScreen mainScreen] applicationFrame]" for Landscape mode 【发布时间】:2011-08-03 17:04:44 【问题描述】:

我不得不问。使用

[[UIScreen mainScreen] applicationFrame]

是在纵向模式下获取 iphone 或 ipad 的工作区域的好方法。但是,如果我想在横向上获得相同的大小,还有其他代码,或者我必须创建:

CGRect landscape = CGRectMake(0, 20, 1024, 748)

这对于 iPhone 和 iPad 来说甚至都不是通用的。

【问题讨论】:

我想知道是否可以安全地假定 applicationFrame 选择器将始终以纵向模式返回该区域。 (并且只需手动切换值。) 您成功解决了这个问题吗?转置宽度和高度值是不可取的。 【参考方案1】:

您可以使用[[[UIApplication sharedApplication] keyWindow] frame]

【讨论】:

当我在视图控制器的 loadView 选择器中调用它时,我得到一个 CGRect,其原点和大小都设置为 (0, 0)。 我不太确定,但它对我有用:loadView] [Line: 788] [[[UIApplication sharedApplication] keyWindow] frame]: 0, 0, 768, 1024。你可以先打电话给[super loadView] 吗?如果这不起作用,那么我建议尝试使用另一种方法。 sizeToFit 或许?

以上是关于横向模式的“UIScreen mainScreen] applicationFrame]”的主要内容,如果未能解决你的问题,请参考以下文章

([[UIScreen mainScreen] scale] == 2.0) & ([[UIScreen mainScreen] bounds].size.height == 568.0) 不

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

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

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

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

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