SWIFT:关于@2x @3x图片的适配问题

关于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,并把相应尺寸的图片拖放至相应位置。


SWIFT:关于@2x @3x图片的适配问题_第1张图片
image set demo

使用的时候,我们只需要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 出现后,如何改进工作流以实现一份设计稿支持多个尺寸?

同时给大家普及几篇关于自动布局的好帖子:

Swift - 使用Auto Layout和Size Classes实现页面自适应弹性布局

Swift - 自动布局库SnapKit的使用详解1(配置、使用方法、样例)

你可能感兴趣的:(SWIFT:关于@2x @3x图片的适配问题)