关于iPhone的屏幕尺寸的介绍网上有很多文章去描述,那么懒的我肯定是复制粘贴都省了,现在主要说一下关于不同尺寸图片如何适配。
实际程序开发当中,我们代码中用的值是指逻辑分辨率pt,而不是像素分辨率px,比如我们定义一个按钮的高度为45,这个45指的是45pt而不是45px。
在非Retina屏下1pt = 1px,4和4.7寸Retina屏下1pt = 2px,5.5和x下1pt = 3px
我们制作不同尺寸的图片,比如@1x为22px,则@2x为44px,@3x为66px,命名分别为image.png,在项目的Assets.xcassets中新建New Image Set,修改名字为image,并把相应尺寸的图片拖放至相应位置。
使用的时候,我们只需要UIImage(named:"image"),系统会根据自身分辨率去自动匹配合适的图片,由于上面描述的pt和px之间的关系的原因,你在给一个button添加icon的时候,也无需顾虑当在iPhone 8plus或iPhone X下由于图片像素太大而担心按钮需要调整高度,因为如果你设置了UIImage的宽高为22,需要匹配@2x的图片的时候,其实你的UIImage在该机型下是44像素的,和@2x图片的尺寸一样,@3x同理。你只需要适配好组件的边距即可。组件最好使用自动布局,这样不同屏幕大小或者是横竖屏下都可以很好地去适配。
由于现在非Retina屏的iPhone已经很少,所以很多开发都已不考虑适配@1x的图片,而剩下的两个尺寸,如何做到交付一套设计稿解决适配两个屏的问题呢?推荐一个帖子给大家做参考:
iPhone 6/6 Plus 出现后,如何改进工作流以实现一份设计稿支持多个尺寸?
同时给大家普及几篇关于自动布局的好帖子: