在 Xcode 6 中使用 PDF 切图

Aug 04, 2016 ·
9 分钟阅读

从 iOS 8 开始,Xcode 6 中就开始支持使用矢量切图,支持的格式为 .pdf,这个支持出自 2014 年,却一直比较少听到关于使用 PDF 切图的使用情况,多听闻的是关于 @1x,@2x,@3x 的 PNG 的输出流程。最近又从别的地方听说了这个方法,以下是关于 PDF 切图的一些实践和结论:

初步搜索

  1. 在站酷上搜索,只找到这样一篇文章,其中文章中的几点都是错误的:

http://www.zcool.com.cn/article/ZMzc3NjA4.html

因为切图成 PDF 并且是 @1x 的时候占用空间非常小,并且省去了一整套 @2x 和 @3x 的切图所占用的空间,喔呵呵呵呵呵想到 app 一下子减少了那么多大小,真是睡觉都笑出声呢。

PDF 切图的大小在正常高质量输出的情况下,大小要比 PNG 大得多。在保持最小的文件大小输出时(文章并没有指明这一点,而事实上这项选择与否跟输出大小有很大关系),大小略比单张的 PNG 要小一些。看上去似乎是这样,但是经过这样压缩的 PDF 是否还符合可用标准呢?下面再作探讨。

PDF 切图的原理

虽然是矢量文件,但是最终依然是由 .pdf 文件来生成不同倍率的 PNG 文件来供使用。由此又得出一个疑问,如果上述的压缩 PDF 文件可用,文件大小比单个 PNG 要小,但是事实上程序内还是会依据 PDF 生成不同的大小的 PNG,那么程序的占用空间是不是并没有减少,反而还增多了?

PDF 是否达到可用的程度呢?

https://bjango.com/articles/idontusepdfs/

这篇文章中阐述了一些作者不使用 PDF 的原因,翻译一下大概以下一些原因:

同时还有其他一些限制:不支持 AppIcon(见 http://ericasadun.com/2014/06/09/that-vector-thing-xcode-6-pdf-assets-and-unfortunate-outcomes/)

关于第一点,我做了一些测试。 A:PS 输出的低质量 PDF; B:PS 输出的高质量 PDF; C:Sketch 输出的 PDF。

分别查看了下这三个文件在 Win 系统及 OSX 下的情况。 A 在两个系统中的阴影均是分层的; B 在 OSX 系统中的阴影是不分层的,在 Win 系统中是分层的; C 在两个系统中均是不分层的;

由这几个文件可见,怎么定夺 PDF 的质量和可用性是一个很严肃的问题。

怎么使用

站酷的文章里也有说明:

  1. 如果你不已经有一个 XCAsset 文件,然后创建一个;否则,打开一个你已经在你的项目中。
  2. 从编辑菜单中的“新建映像集”。
  3. 在出现新的图像集,选择空白图像集,然后显示在工具面板。
  4. 选择属性检查器。
  5. 根据类型下拉菜单中选择“矢量”。
  6. 图像设置将变成只有一个放置点,标有“全部 - 通用”。
  7. 拖放上面创建到落点的矢量 PDF 文件。

很可惜描述得很粗糙而且很外行。第一点错误是 Xcode 错误的写成了 xconde(这里没贴出)。第二点是这段话明显是从某个地方直接翻译过来的,因为界面的功能都被翻译成了中文。一般的描述说明是不可能把英文界面的功能特意翻译成中文。(除非作者坚果中文版的 Xcode)

具体的用法可以参考:http://blog.csdn.net/cuibo1123/article/details/39486197/ 其中贴出和上述描述一样的部分:

  1. 如果你没有 XCAsset 文件,创建一个。如果你已经有一个 XCAsset,那么打开它。
  2. 从编辑菜单(右键)中选择“New Image Set”。
  3. 在新出现的图像集合中,选择空白的图像集合,然后打开 Utilities(右侧)面板。
  4. 选择属性检查器(右侧面板中)。
  5. 在类型的下拉菜单中,选择“Vectors”。
  6. 这是图像设置的位置将变成一个空位,标有 “All - Universal”。
  7. 拖放 PDF 文件到上面。

明显可见,这段和上面一段是从同一个地方(http://martiancraft.com/blog/2014/09/vector-images-xcode6/)翻译过来的。翻译得孰优孰劣,一看便知。 补充一个链接:http://beforweb.com/node/633 翻译的同样是同一篇文章,个人认为这篇翻译是最好的。

实际的试用情况是如何呢?

http://stackoverflow.com/questions/24149785/xcode-6-allows-vector-image-assets-any-idea-how-to-use-them 在这里可以看到一些人的使用情况,有空的时候会翻译一些贴出。

还有什么矢量替代方案?

根据以上的资料可以暂时有两个:

关于矢量

矢量文件可以是 PDF 格式,但是 PDF 却并不一定是矢量文件。这就带给我一个新的疑问,究竟怎样的输出才算是一个矢量的 PDF 文件呢。关于这件事会继续查找一些资料。

适合的场合

PDF 切图在实际输出的时候极为痛苦。 Windows 下 PSCC 开始的版本,提供了如 Sketch 一样快捷的输出的功能,唯独缺少 PDF 格式,所以设计图配合上 PDF 输出切图将会是一个很繁琐的流程。 OSX 下使用 PS 同理,使用 Sketch 时输出 PNG 与 PDF 的流程一致,也并没有特别使用 PDF 的必要性。

当然,有一些适用的场景使用 PDF 文件是很方便的:

题外

有人说别的公司都在使用 Zeplin 啦不用切图不用标注啦我们公司还用 PDF 切图这么落后的方式,哎。

在此我表达几个观点:

编辑于 Nov 19, 2024
© 2025 Bluepikachu