【文章单位基于的设备尺寸为750x1334,也就是@2x尺寸 】*
    感谢评论区的 指出

    UI 设计师用 sketch 输出的设计稿交付工程师后还原总是会遇到一些问题

    尤其以字体与其它元素的间距最容易出问题,主要的原因是 sketch 与 ios 系统中字体的行高不同。最简单的解决方法是通过手动调整 sketch 中字体的行高,业界常用的行高是字体 size 的1.2或者1.4倍,实际这两个值都是够不准确的。

    所以要想知道最准确的值,那就要先把程序中字体的行高的值取出来,最简单的方法当然就是用 xcode 跑几十种不同尺寸字体,然后截图量出来行高对了。


    下图是新鲜的 xcode 用单个 Label 拖动的方式,把不同字号的中英文字体放到界面中

    背景颜色即为程序中字体的行高,也就是 sketch 中的 spacing line 的值。

    【文字行高】聊一聊 Sketch 与 iOS 文字的行高 - 图1

    可以看到 mainStoryboard 中的文本已经跑到左边的模拟器里面了,这个时候只需要 com+s 即可保存原汁原味的屏幕截图。


    下面这张图就是程序上面的原截图,左边的橙色区域是我已经测量好的行高值。

    【文字行高】聊一聊 Sketch 与 iOS 文字的行高 - 图2


    上图并不容易看清楚不同字体不同的行高,所以我也制作了一个表格

    具体整理出来的表格在下方

    【文字行高】聊一聊 Sketch 与 iOS 文字的行高 - 图3

    绿色区域为我们在 APP 开发中常用的字号22px ~30px

    最下方的+4 +6 +8….. 都是总结出来的规律:

    如果字体大小在12~20之间,字体行高等于字体大小加4;

    if ( 12 <= font size <= 20 ) { line height = font size + 4 };

    if ( 22 <= font size <= 30 ) { line height = font size + 6 };

    if ( 32 <= font size <= 40 ) { line height = font size + 8 };

    …….

    实际上上面的 if 语句还是有规律的,所以插件里用到了更好的算法,程序方面的东西就不在这里细写了。


    计算机上所有重复的工作都是可以通过程序去解决,所以我们制作了一个sketch插件

    youngxkk/AutoFixiOSTextLineHeightgithub.com【文字行高】聊一聊 Sketch 与 iOS 文字的行高 - 图4

    插件运行原理是遍历 sketch 中字体的大小,然后通过上方表格的规律,把不同尺寸的字体填充不同的行高,达到与 ios 开发中字体的行高相同。

    这样用 sketch measure 导出的设计稿给工程师的时候,只要工程师按照设计稿上面字体与其它元素间距的值去写程序,那么还原度理论上是100%的。

    【只测试过 iOS 系统中苹方和 SF 字体,其它的自定义字体就随缘吧。】

    【建议多行文本不要使用此插件】会让排版变的很丑陋,多行文本就单独与开发联调吧。

    目前支持同时选中多个文本图层或选中单个 Artboard,然后运行插件

    使用快捷键效率更高:shift + option + command + i

    【GIF】

    【文字行高】聊一聊 Sketch 与 iOS 文字的行高 - 图5