Ios UIScreen mainScreen.bounds返回错误的分辨率,即使是启动图像也是如此

Ios UIScreen mainScreen.bounds返回错误的分辨率,即使是启动图像也是如此,ios,objective-c,ipad,opengl-es,Ios,Objective C,Ipad,Opengl Es,我已经有一段时间不停地思考这个问题了,但我似乎不知道是什么导致了这个问题 我有一个只在横向模式下运行的iPad应用程序。我需要支持1024x768和2048x1536分辨率的屏幕,并使用设备的屏幕分辨率为opengl定义视口和保护 这一切都可以在1024x768设备上正常工作 但是,在2048x1536设备上运行时,[UIScreen mainScreen]。bounds仍返回1024x768 我只针对iOS 7.0及更高版本,我有一个带有启动映像的资产库。为了安全起见,我甚至加入了肖像模式的启

我已经有一段时间不停地思考这个问题了,但我似乎不知道是什么导致了这个问题

我有一个只在横向模式下运行的iPad应用程序。我需要支持1024x768和2048x1536分辨率的屏幕,并使用设备的屏幕分辨率为opengl定义视口和保护

这一切都可以在1024x768设备上正常工作

但是,在2048x1536设备上运行时,[UIScreen mainScreen]。bounds仍返回1024x768

我只针对iOS 7.0及更高版本,我有一个带有启动映像的资产库。为了安全起见,我甚至加入了肖像模式的启动图像

我有4张发布图片(仅为白色PNG): iPad肖像iOS 7,8 1x:768x1024 iPad肖像iOS 7,8 2x:1536x2048 iPad横向iOS 7,8 1x:1024x768 iPad横向iOS 7,8 2x:2048x1536

但是,当应用程序启动时,我得到了错误的屏幕尺寸,因此我的OpenGL视图只占整个屏幕的1/4

任何帮助都将不胜感激

编辑:


我修改了启动图像,以便查看它使用的是哪一个,并且它使用的是2x横向图像,正如预期的那样,但返回的分辨率仍然不正确。

iOS中的大小是以点为单位计算的。根据设备的不同,您的刻度可能会有所不同<代码>[UIScreen Main Screen]。刻度将返回刻度

不建议您实际使用屏幕分辨率,而是使用边界,以便设备将自动以适当的比例渲染所有内容


此外,iphone6plus的尺寸缩小了,因此获取尺寸并乘以边界将无法获得正确的屏幕分辨率。

您可以通过以下代码行找到正确的尺寸

[[UIScreen mainScreen] currentMode].size;

您还需要考虑
[UIScreen mainScreen]。缩放。对于非视网膜设备,它将是1.0,对于视网膜设备,它将是2.0。这将返回以像素为单位的大小。非视网膜iPad为1024*768,视网膜iPad为2014*1536。