我认为statusBarFrame
和applicationFrame
彼此完全互补,形成了整个屏幕的边界。框架的值相对于“原始”纵向屏幕的坐标(我认为这是屏幕的边界)。因此,例如,当iPad上下颠倒旋转时,
NSLog(@"the status bar frame is %@",
NSStringFromCGRect([[UIApplication sharedApplication] statusBarFrame]));
NSLog(@"the applicationFrame is %@",
NSStringFromCGRect([[UIScreen mainScreen] applicationFrame]));
是
the status bar frame is {{0, 1004}, {768, 20}}
the applicationFrame is {{0, 0}, {768, 1004}}
但是有一个问题,这两个互补的值怎么会来自两个不同的对象:应用程序实例和
UIScreen
实例,而不是来自同一对象? (例如,是否都来自UIScreen
对象?) 最佳答案
简而言之,这是因为每个应用程序只有一个状态栏,但是单个应用程序可能有多个屏幕(例如,通过AirPlay)。