gpt4 book ai didi

ios - UIScreen mainScreen 边界给出错误的大小

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:15 27 4
gpt4 key购买 nike

您好,我正在以编程方式启动一个 rootViewController(只有门户,没有风景)

这是代码使用

CGRect appFrame = [[UIScreen mainScreen] bounds];

但它没有给出正确的尺寸。 (在屏幕底部缩小)

只有这段代码给出正确的

 CGRect appFrame = [UIScreen mainScreen].applicationFrame

但是这段代码会给出折旧的警告(applicationFrame is depreciated)

(我的模拟器是IOS 9.3)

如何解决这个问题?非常感谢任何帮助!谢谢!

这里是使用 [UIscreen mainscreen].bounds 时的截图

enter image description here

这里是 [UIscreen mainscreen].applicationFrame

enter image description here

最佳答案

[[UIScreen mainScreen] bounds] 给出了整个窗口的正确大小,但它包括状态栏的大小。如果你想要状态栏的大小(你可以减去它的高度),你应该使用 [[UIApplication sharedApplication] statusBarFrame] 来获取状态栏的框架。导航栏和标签栏的高度通常为 44。因此,如果您的 View 需要矩形,请使用 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框架你需要它。

关于ios - UIScreen mainScreen 边界给出错误的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38773513/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com