[[UIScreen mainScreen] bounds]
给出整个窗口的正确的尺寸,但它包括状态栏的大小。如果您需要状态栏的大小(可以减去其高度),则应使用[[UIApplication sharedApplication] statusBarFrame]
来获取状态栏的框架。导航栏和标签栏一般有44的高度所以,使用CGRectMake()
如果您需要为您的视图中呈矩形:
CGRect frame_screen = [[UIScreen mainScreen] bounds];
CGRect frame_view = CGRectMake(0,0,frame_screen.size.width,frame_screen.size.height - [[UIApplication sharedApplication] statusBarFrame].size.height);
注意的CGRectMake
最后一个参数是高度,通常你可以减去44的标签栏或导航栏。
编辑:尝试记录[UIScreen mainScreen].applicationFrame
和[[UIScreen mainScreen] bounds]
控制台,看看它们之间有什么区别。类似于
CGRect frame_screen = [[UIScreen mainScreen] bounds];
NSLog(@"x: %f, y: %f, width: %f, height: %f",frame_screen.origin.x,frame_screen.origin.y,frame_screen.size.width,frame_screen.size.height);
CGRect frame_application = [UIScreen mainScreen].applicationFrame
NSLog(@"x: %f, y: %f, width: %f, height: %f",frame_application.origin.x,frame_application.origin.y,frame_application.size.width,frame_application.size.height);
然后使用该信息使[[UIScreen mainScreen] bounds
框架如何您需要它。
嗨,我们需要减去rect.size.height - [[UIApplication sharedApplication] statusBarFrame] .size.height。仅使用rect.size.height时,我找到了相同的结果。那是对的吗? –
是因为,它会带你的画面[[UIApplication的sharedApplication] statusBarFrame] .size.height下来,所以不会降低屏幕的下部将被裁剪。 –
谢谢!边界包括状态栏,所以我们需要一些计算来获得实际的框架从边界 –