Vector graphics Xcode 6允许矢量图像资源。。。如何使用它们?

Vector graphics Xcode 6允许矢量图像资源。。。如何使用它们?,vector-graphics,ios8,xcode6,Vector Graphics,Ios8,Xcode6,我正在摆弄Xcode 6 vs images资产,这时我注意到了一件非常有趣的事情:我们现在可以在其中指定矢量图像(在选择images.xcsets后,在实用程序窗格中查看) 我尝试了一个小应用程序(包含一个大的UIImageView),它有一个.SVG图像(不起作用),然后是一个.EPS图像(也不起作用),最后我尝试了一个.PDF,它起作用了!嗯,虽然我看到了这张图像,但它看起来是像素化的,而不是矢量化的 因此,苹果似乎正在为矢量图标/图像铺平道路。不再有无数版本的应用程序图标,不再有“@2x

我正在摆弄Xcode 6 vs images资产,这时我注意到了一件非常有趣的事情:我们现在可以在其中指定矢量图像(在选择images.xcsets后,在实用程序窗格中查看)

我尝试了一个小应用程序(包含一个大的UIImageView),它有一个.SVG图像(不起作用),然后是一个.EPS图像(也不起作用),最后我尝试了一个.PDF,它起作用了!嗯,虽然我看到了这张图像,但它看起来是像素化的,而不是矢量化的


因此,苹果似乎正在为矢量图标/图像铺平道路。不再有无数版本的应用程序图标,不再有“@2x”图像。但是有人可以解锁该功能吗?

下面是如何在Xcode 6的资产目录中试验矢量图像:

  • 制作一个新的图像集

  • 在图像集中选择一个空白图像槽,然后将“属性检查器”中的弹出窗口切换为“向量”。现在您有了一个通用映像插槽

  • 将矢量PDF拖到该插槽中

  • 现在,无论在何处使用该图像,都会根据其上下文(例如,固定大小的图像视图)调整其大小,而无需光栅化,如此屏幕截图所示:

    编辑尽管有这个答案,较大的PDF图形仍在光栅化。但是现在,请参见:在Xcode 9中,矢量PDF可以正确缩放,而不需要光栅化


    编辑在Xcode 11中,此公式有效:在资源目录中,必须将“比例”弹出菜单设置为“单个比例”,并将基于矢量的图像放入1x插槽。选中“保留向量数据”。完成。

    在向量资产上做了一些实验后,以下是我的一些想法:

    1。编译时支持

    经过几次试用,我相信这只是一个编译时支持。Xcode在编译时生成所有1x、2x和3x映像。这意味着它适用于较旧的iOS版本。同时,这意味着在最终构建中,它仍然是PNG格式的,并且您无法从矢量文件中获得更大的无损图像

    2。为什么使用PDF而不是SVG或其他格式

    对于SVG和其他格式,矢量图像没有实际大小信息,而PDF有大小信息。我认为Xcode 6所做的是使用PDF中的大小信息作为实际显示大小,然后从矢量图像生成2x 3x文件

    3。PDF的文件大小无关紧要

    一开始,我们担心PDF将比PNG大得多。我们试着压缩它,效果很好。但是,如果像我前面所说的那样,原始PDF文件没有包含在构建中,那么PDF的文件大小就无关紧要了

    如果我发现其他东西,我会继续编辑这篇文章

    编辑14-09-25

    @mredig提到,对于iOS,它在编译时生成位图,但对于OSX,它以可伸缩的形式包含向量图像


    via:

    我只是创建了一个自定义字体,比如说,图标,甚至是应用程序的标志,并以这种方式使用它,然后将它拉到我的应用程序中。然后,我可以非常轻松地调整设备和屏幕分辨率的字体大小。

    您可以使用此在线工具将图像从svg转换为pdf

    1-上传图像

    2-选择宽度:24px,高度:24px

    3-复制到您的xcode项目

    4-转到Images.xcsets

    5-右键单击并创建新图像集

    6-从右侧面板中选择(属性检查器)

    7-将类型更改为向量

    8-将您的pdf图像拖放到此处


    9-在项目中使用它

    一个技巧-创建PDF@2x分辨率和文件名@2x(myfile@2x.pdf) 这样做,你会得到完美的锐化和对比度图像,特别是iPad2和mini。

    如果您正在寻找以下问题的答案:“我如何在iOS应用程序中使用矢量图形并始终以完美的方式缩放它们?”那么我可以向您强烈推荐

    我觉得这绝对是个好办法。现在,我不再使用三种不同分辨率的PNG格式的所有图像,而是为每个图像创建一个小小的PDF文件。我可以显示如下:

    // Objective C:
    self.icon.image = [UIImage imageWithPDFNamed:@"icon.pdf" fitSize:self.icon.frame.size];
    
    // Swift:
    icon.setImage(UIImage(PDFNamed: "icon.pdf", fitSize: icon.frame.size))
    
    除了
    fitSize:
    ,还有
    atWidth:
    athight
    atSize:

    我对所有可以矢量化的图像使用
    UIImage+PDF
    ,对照片图像只使用PNGs

    我还通过类似的方式运行我的PDF文件,以确保它们的文件大小最小


    Erik

    如果您正在构建应用程序图标,PDF将无法工作。你可能想看看一个项目,我刚刚创建了一个名为。它可以建立PNG,PDF等。。。来自包括SVG文件在内的源图像。非常感谢您的反馈。

    这里有一个关于这个主题的博客:但是他们没有运气只使用一张图片,而是每个图片大小使用1个PDF。在这一点上,我认为该功能还不完整,但我不同意。在我看来,这似乎很好。@Jean Le Moignan你能分享你读到的链接吗?@Developer我希望我能,但我的问题完全基于Xcode中的反复试验,而不是任何书面材料。我注意到,如果你创建一个基于选项卡的iOS应用程序,默认的选项卡按钮图标是资产目录中的
    pdf
    s。不确定所说的
    pdf
    s(没有时间在-say-adobeillustrator中打开它们)的要求是什么。我不相信这个功能是为应用程序图标设计的;仅适用于应用程序内部艺术品。我遇到的问题是,当使用自动布局时,我使用PDF艺术品的视图(例如UIButton)会从原始PDF艺术品大小中获取内容大小,这在所有情况下都不理想(我可能希望iPad上有一个更大的按钮)。你知道解决这个问题的方法吗?为什么是PDF而不是SVG?太奇怪了。@matt你能告诉我如何创建pdf文件吗?我可以用photoshop生成pdf矢量文件吗?@Koen nope,png不是矢量图像,而是位图。警察局