您好我以编程方式启动了一个rootViewController(门户网站只有没有格局)
这是代码使用
[]
但它没有给出正确的尺寸。 (在屏幕下方缩小)
只有此代码才能正确
CGRect appFrame = [[UIScreen mainScreen] bounds];
但是这段代码会给出折旧警告(applicationFrame折旧)
(我的模拟器是IOS 9.3)
如何解决问题?任何帮助都非常感谢!谢谢!
这是使用 CGRect appFrame = [UIScreen mainScreen].applicationFrame
这里是[UIscreen mainscreen] .applicationFrame
答案 0 :(得分:3)
[[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
框架,以满足您的需求。
答案 1 :(得分:2)
您可以执行以下操作。
CGRect rect = [UIScreen mainScreen].bounds;
CGRect screenFrame = CGRectMake(0, [[UIApplication sharedApplication] statusBarFrame].size.height, rect.size.width, rect.size.height - [[UIApplication sharedApplication] statusBarFrame].size.height);
现在您可以使用此screenFrame,我希望这可以解决您的问题。
答案 2 :(得分:-1)