2016-08-04 125 views
3

嗨,我是编程启动RootViewController的(门户只无景观]UIScreen mainScreen界给出错误的大小

这是代码使用

CGRect appFrame = [[UIScreen mainScreen] bounds]; 

但它不会给正确的大小。在(削减屏幕底部)

只有这个代码提供正确的

CGRect appFrame = [UIScreen mainScreen].applicationFrame 

但是这款C颂会给贬值的警告(applicationFrame折旧)

(我的模拟器是IOS 9.3)

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

这里使用[UIscreen mainscreen].bounds

enter image description here

时是screenshoot这里是[UIscreen mainscreen] .applicationFrame

enter image description here

回答

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,我希望这会解决你的问题。

+1

嗨,我们需要减去rect.size.height - [[UIApplication sharedApplication] statusBarFrame] .size.height。仅使用rect.size.height时,我找到了相同的结果。那是对的吗? –

+0

是因为,它会带你的画面[[UIApplication的sharedApplication] statusBarFrame] .size.height下来,所以不会降低屏幕的下部将被裁剪。 –

+1

谢谢!边界包括状态栏,所以我们需要一些计算来获得实际的框架从边界 –

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框架如何您需要它。

+0

嗨使用你的建议,我仍然得到削减在底部。可能需要启动0,0的一些计算,因为在底部减少不上边 –

+1

不知道为什么,我需要移动Y方向这样做正确的CGRect appFrame = CGRectMake(0,[[UIApplication的sharedApplication] statusBarFrame] .size.height,frame_screen.size.width,frame_screen.size.height - [[UIApplication sharedApplication] statusBarFrame] .size.height); –

+0

你可以在你的问题中加入截图吗?我不认为我很理解问题所在。也许你可以添加更多的代码来解决这个问题? –

-1

确保已将所有分辨率开机画面上你要跟的应用Images.xcassets `

请采取屏幕截图来看看我附

`enter image description here

CGRect appFrame = [[UIScreen mainScreen] bounds]; //这是 获取屏幕尺寸的正确方法

+0

你好,这是我原来的launchImage:https://开头postimg。 org/image/tow29iwnr/ –

+0

当尝试添加1个更多的设置我得到了这些巨大的类别。我们是否需要添加添加? https://postimg.org/image/91dedwqgh/ –

+1

发射图像与此问题无关。 –

相关问题