【发布时间】:2012-03-26 23:32:30
【问题描述】:
我最近一天醒来,意识到我们 iOS 开发人员现在有一小群不同的屏幕尺寸/分辨率可以适应。下表说明了当前部署的 iOS 设备的屏幕规格:
http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density
非常方便。现在这是难题:
我在 iPad2 上构建了一个简单的 Open GL 视图。我的代码正在制作 OpenGL 视口 iPhone/Pad 的普通像素尺寸(320x480、768x1024)。我在这个东西上画了一个白色的矩形。我把它设为 200px 宽。这真好。好旧的 iPad。
我将相同的代码(自动检测屏幕尺寸)编译到我的 iPhone4 中。我的白色矩形与垫子上的宽度不同。很公平。我知道iPhone4的实际像素尺寸是640x960,iPad是768x1024,考虑到每个设备的ppi。
除以 768/640 我得到了很好的缩放因子 1.2,然后我将其乘以 200 得到我的测试矩形的宽度并为 iPhone4 重新编译... Arrrgh...它几乎可以工作了.该矩形仅比 iPad 对应的矩形小几个像素。
谁能指出我推理中的错误?我希望能够将可显示对象标记为“与屏幕无关”,以在 iThings 之间保留它的 物理 尺寸。一次编写,随处运行。对对对。
我正在开发一款游戏,当然,那该死的精彩 iPad3 有了新的分辨率。我试图尽可能多地抽象出可能的解决陷阱。在发布之前,我可能没有机会在 iPad3 上测试我的应用程序。还有其他人在同一条船上吗?
【问题讨论】:
-
我不会根据大屏幕尺寸除以小屏幕尺寸的因素来缩放它。我会用划分PPI的因素来做。但是,我不会担心物理尺寸,只要比例好就足够了(除非您需要物理尺寸在设备之间保持不变,例如在标尺应用上)
标签: iphone ipad opengl-es screen-resolution retina-display