我认为statusBarFrameapplicationFrame彼此完全互补,形成了整个屏幕的边界。框架的值相对于“原始”纵向屏幕的坐标(我认为这是屏幕的边界)。因此,例如,当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)。

10-08 05:54