在 Xcode 6 中使用 PDF 切图

Xcode 6中使用PDF切图

Aug 04, 2016 ·
9分钟阅读

iOS 8开始,Xcode 6中就开始支持使用矢量切图,支持的格式为.pdf,这个支持出自2014年,却一直比较少听到关于使用PDF切图的使用情况,多听闻的是关于@1x,@2x,@3xPNG的输出流程。最近又从别的地方听说了这个方法,以下是关于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在两个系统中的阴影均是分层的; BOSX系统中的阴影是不分层的,在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切图在实际输出的时候极为痛苦。 WindowsPSCC开始的版本,提供了如Sketch一样快捷的输出的功能,唯独缺少PDF格式,所以设计图配合上PDF输出切图将会是一个很繁琐的流程。 OSX下使用PS同理,使用Sketch时输出PNGPDF的流程一致,也并没有特别使用PDF的必要性。

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

题外

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

在此我表达几个观点:

编辑于Jan 31