为什么我在 Apple 的一些示例代码(例如 PhotoScroller)中看到我应该在以下内容中执行以下操作loadView
:
CGRect frame = [[UIScreen mainScreen] bounds];
代替
CGRect frame = [[UIScreen mainScreen] applicationFrame];
获取主屏幕的框架有什么不同吗?
为什么我在 Apple 的一些示例代码(例如 PhotoScroller)中看到我应该在以下内容中执行以下操作loadView
:
CGRect frame = [[UIScreen mainScreen] bounds];
代替
CGRect frame = [[UIScreen mainScreen] applicationFrame];
获取主屏幕的框架有什么不同吗?
ApplicationFrame 是屏幕大小减去状态栏(如果可见)的大小,bounds 是屏幕大小,与状态栏无关。
所以 applicationFrame 会返回CGRectMake(0,0,320,460)
假设你的应用程序的状态栏设置为可见,而 bounds 会CGRectMake(0,0,320,480)
在相同的条件下返回。这些数字假设 iPhone/iPod Touch 屏幕尺寸。
iOS 9 更新
在 iPad 上使用拆分视图功能时,applicationFrame
返回应用程序窗口的大小。bounds
总是返回设备的大小。