美文网首页ios 开发
iOS 分辨率与适配

iOS 分辨率与适配

作者: _浅墨_ | 来源:发表于2015-04-13 22:18 被阅读606次
    size.png

    分辨率和像素
    经新xcode6模拟器验证(分辨率为pt,像素为真实pixel):
    1.iPhone5分辨率320x568,像素640x1136,@2x
    2.iPhone6分辨率375x667,像素750x1334,@2x
    3.iPhone6 Plus分辨率414x736,像素1242x2208,@3x,(注意,在这个分辨率下渲染后,图像等比降低pixel分辨率至1080p(1080x1920)

    size2.png

    比如你需要一个30pt30pt的图标,那么这时你需要三个文件:
    一个是30px
    30px的PNG图片,用原名来命名即可,例如sample.png。
    一个是60px60px的PNG图片,这个要用原名@2x来命名,例如sample@2x.png。
    一个是90px
    90px的PNG图片,这个要用原名@3x来命名,例如sample@3x.png。
    这样把这三张图片导入进工程,你会神奇地发现,这三个文件居然会被iOS统一识别为sample.png,用的时候只需要[UIImage imageNamed:@"sample.png"]就行了。
    以下为应用场景。
    1x的图标用于1:1的屏幕,非视网膜屏,例如iPhone 3GS、早期iPhone 4、非视网膜屏的众多iPad等。
    2x的图标用于1:2的屏幕,大部分视网膜屏,机型如(/20140414ADD/ iPhone 4、)iPhone 4S、iPhone 5、iPhone 5s、iPhone 6、iPad with Retina及后续的视网膜屏iPad等。
    3x的图标目前应用于1:3的屏幕,即iPhone 6Plus,这个就比较特殊了,因为苹果为了方便开发者,想出来一个简便的实现方案,将22081242分辨率的图像压缩输出在19201080的屏幕上。

    iPhone机型.png

    参考:
    1、http://www.zhihu.com/question/25421514
    2、http://www.zhihu.com/question/25421514
    3、http://blog.csdn.net/rhljiayou/article/details/11127323

    自动适配
    不处理时自动等比拉伸,如果在老工程打印屏幕frame,依然是320x568
    对比自动适配的和完美适配的导航栏就能看出问题:

    question.png

    因为拉伸所以会有一些虚,导航栏明显比64要大,但相比3.5寸到4寸的留黑边还是好很多。

    launchImage.png

    不过这个xib不能关联任何的代码(不能自定义View的Class,不能IBOutlet,不能加Object),可以理解成这个xib就是一张截图,这个方案的好处在于可以使用到Size Classes来针对不同屏幕布局这个xib(感兴趣可以看《Size Classes初探》)

    关于手动适配
    只要手动指定了启动图或者那个xib,屏幕分辨率就已经变成应有的大小了,老代码中所有关于写死frame值的代码通通倒霉,如果去手动适配就要全部适配,建议在找到个可行方案前先不要做修改,自动适配方案还算不影响使用。

    面对4个分辨率的iPhone,建议使用Auto Layout布局 + Image Assets管理各个分辨率的图片 + Interface Builder(xib+storyboard)构建UI,Size Classes在低版本iOS系统的表现未知。想要这套手动适配方案,起码你的工程需要部署在iOS6+,还不用AutoLayout布局的会死的蛮惨。

    相关文章

      网友评论

        本文标题:iOS 分辨率与适配

        本文链接:https://www.haomeiwen.com/subject/kdwkfttx.html