如何用sketch设计自动适应不同屏幕分辨率的UI
如何让一套设计自适应不同屏幕?相信每个UI都有这样的需求。你还在自己一个一个屏幕尺寸去慢慢调整像素值吗?太慢啦~ 其实用sketch自带的symbol/reszing,再加上一个超好用的插件:Auto-Layout,就能很高效的解决这个问题。下次甲方说:我想看看这个设计在 ipad/网页/iphone7 plus 上是什么效果? 你就可以瞬间生成设计图啦!
先看一下最终的效果:
![](https://img.haomeiwen.com/i290620/8bebdc712a71d386.gif)
不论如何改变当前sketch中artboard的大小,其中的UI都会按照我设置的要求自适应的变化,并且不会出现图片被拉伸或者位置没有居中之类的错误。
如果你不觉得这很神奇,请在自己的sketch artboard上拖拽一下试试:
![](https://img.haomeiwen.com/i290620/d1c364f776052979.gif)
下面具体介绍下我是如何实现的,整个过程分为三步:
Step1. 整理UI将其中重要组件设置为symbol
可以下载我的sketch-demo文件 ,demo页面结构如下:
![](https://img.haomeiwen.com/i290620/aa8f23ba16f1d497.png)
所有symbol如下:
![](https://img.haomeiwen.com/i290620/18f998d32b77566d.png)
其中cover由user,icon和bg这三个更小的symbol构成。我很喜欢这种symbol中套symbol的结构,可以无限复用重组~
2. 给Symbol中的元素选择合适的resizing选项
好像很多人都没用过sketch中的resizing,甚至没注意到它的存在。resizing的位置如下图(选中symbol时会出现):
![](https://img.haomeiwen.com/i290620/acc08b44d661445e.jpg)
resizing这个选项的意义就是,当symbol的大小变化的时候,其中的元素位置如何变化,比如我给底部导航栏中的每个图标的resizing都设置为 float in place,那么当底部导航栏宽度变化的时候,图标会保持自己的大小和百分比位置不变:
![](https://img.haomeiwen.com/i290620/30f082929b8e99dd.jpg)
效果:
![](https://img.haomeiwen.com/i290620/d4b0f3f8e8f15aeb.gif)
给每个元素都设置好,具体如下:
![](https://img.haomeiwen.com/i290620/d97dd98a460102bd.jpg)
pin to corner就是元素大小不变,位置固定在相对距离最近的corner处。具体可以看看sketch官网解释,基本上试用一下就会明白了。
3. 使用auto-layout插件让整个UI自适应
最后一步就是用大名鼎鼎的auto layout插件啦,下载地址:Auto Layout for Sketch
这个插件使用非常简单,插件安装完成后,会在sketch上出现一个选项栏:
![](https://img.haomeiwen.com/i290620/ca2969185c8007fd.png)
我们从cover开始,给其设置对应的autolayout参数。我们希望不论屏幕如何变化,cover都要100%的宽度,所以:
![](https://img.haomeiwen.com/i290620/76b6ec83ffe20341.jpg)
而底部的tab栏,我们希望它始终保持在距离屏幕底部为0的地方,左右距离也为0。如图使用pin的功能即可。
![](https://img.haomeiwen.com/i290620/57a97e79e5842284.png)
关于更多autolayout的高级使用方法,可以看看官网的说明和视频 guide
完成这三步,你的sketch设计稿已经变成完全的自适应UI了!