简单说,iOS 支持矢量图片,不过支持的一般。

在系统层面上,iOS 对矢量绘图支持得很好。iOS 的 Core Graphics 框架带有很多矢量绘图命令,简单一些的直线、矩形、椭圆,复杂一些的贝赛尔曲线都可以画,也可以指定填

充、描边什么的。如果要是做 App 时想画一个简单的图形,直接用代码就可以画,就省去动用 PS、AI 画然后在导入的功夫了。

对于具体的文件类型处理上,(根据个人经验)iOS 原生支持两种矢量图片:PDF (对,PDF 也可以算是矢量图)和 SVG,不过都支持的一般。

iOS 的 Core Graphics 框架底层和 OS X 一样,都是基于 PDF 的。所以 iOS 用 PDF 很方便,比如 iOS 的 Quick Look 框架就可以直接看 PDF。如果要是只看文档那样简单的 PDF 的话,一般是没有什么问题的。不过,如果要是想看用 AI 制作的,带有多重描边、填充、网格渐变、阴影、多图层等东西的复杂 PDF 图形的话,有很大机率会出现问题。比如,在 iOS 和 OS X 上常出现的一个问题是,PDF 文稿里隐藏的图层、图形被显示出来。如果查看复杂一些的 PDF,很可能在 Adobe Illustrator、OS X、iOS、Adobe Reader 下查看的效果都不一样。所以说,PDF 虽然一般被认为是跨平台的「安全格式」,不过也并不是 100% 保险。 Adobe Reader 的 iOS 版很可能没有使用 iOS 系统自带的 PDF 和矢量绘图 API,而是自己实现了一个,因此通常 Adobe Reader 显示复杂一些的 PDF 比使用 iOS 原生 API 解析 PDF 的 App 更准确一些。还有, 无论是使用 iOS 原生的 Quick Look 还是用 Adobe Reader 查看,渲染复杂的 PDF 有可能特别慢,之前在 iPad 3 上查看自己用 AI 做的 PDF,每一页至少要渲染半分钟,有些甚至要渲染一分钟以上。

另一种常见的矢量图形是 SVG 格式的。SVG 格式的矢量图可以用 InkScape、AI 这样的矢量图创作软件制作、导出。SVG 是纯文本格式的 XML 文件,直接用文本编辑器手写也可以。iOS 的 Safari 浏览器和 UIWebView 控件是支持 SVG 图形的,比如像维基百科上的「日章旗」矢量图:


稍复杂一些的也可以,比如英国国徽:


不过,iOS 和 OS X 上的 Safari 以及系统自带的 WebKit 组件有一个缺点:对于一些复杂的 SVG 滤镜支持的不太好(SVG 滤镜的概念和使用可以参考我之前写的一篇文章:http://zhuanlan.zhihu.com/akirachang/19675967),只支持一些较简单的 SVG 滤镜,比如 feGaussianBlur 高斯模糊滤镜。像一些较为复杂的滤镜,比如 feDiffuseLighting,可能会显示有误:

如图,上面一排是预期效果(预渲染),下面一排是 SVG 滤镜实时渲染效果。可以看到,渲染出来的效果与预期效果有很大的偏差。

另外,还有 EPS 格式的矢量图。iOS 似乎不支持这种格式,不过可以通过一些开源的库将其解析为 Core Graphics 能够理解的东西。

还有就是 Adobe Illustrator 原生的 AI 格式。iOS 系统似乎也不可以通过 Quick Look 直接查看。不过 Dropbox 实现了 AI 文件的预览,渲染应该是在服务器端实现的。

差不多就这些了。

(转)iOS 对矢量图片的支持如何?的更多相关文章

  1. iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView

    iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView 时间:2016-01-19 19:13:43      阅读:630      评论:0      收藏:0   ...

  2. iOS 使用矢量图

    iOS 使用矢量图 iOS 图标通常用 PNG 格式的图片.PNG 图片放大到超过自身的大小就会模糊.可以使用 PDF 格式的矢量图,优点是任意改变图片大小并且保持清晰度. 简单使用 与 PNG 格式 ...

  3. 免费素材下载:iOS 8 矢量 UI 素材套件

    小伙伴们,苹果终于在今天凌晨推送了 iOS 8 的正式版.虽然该系统并未与 iPhone6 发布会同时亮相,但对于已经提前体验尝鲜过测试版的同学来说并不陌生.iOS 8 几乎每个图标都进行了重新设计, ...

  4. C# 第三方DLL,可以实现PDF转图片,支持32位系统、64位系统

    itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器.使用时只需在你的C#项目中添加引入此组件即可,使用方法网上有很多,自己查阅一下 ...

  5. 解决iOS中tabBarItem图片默认颜色的问题(指定代码渲染模式为以原样模式的方式显示出来)

    解决iOS中tabBarItem图片默认颜色的问题(指定代码渲染模式为以原样模式的方式显示出来) 解决办法:指定图片的渲染模式(imageWithRenderingMode为:UIImageRende ...

  6. IOS设备对position的支持性

    最近在开发一个网页. 要嵌套在微信里 大家都知道 IOS版微信和安卓版微信还是一定的差距 IOS版微信在打开网页的时候回调取自己的浏览器以及内核 但是安卓版微信不会,他会默认使用自己的QQ浏览器和X5 ...

  7. 【原创】修复ios输入框获取焦点时不支持fixed的bug

    前些日子,做了一个手机站的项目,有一个页面是这样的, 有一个固定(position:fixed)的头部和底部导航,中间是一些表单内容,没啥特别的.但是到了ios中,正常滚动页面没有问题,一旦触发了文本 ...

  8. iOS开发基础-图片切换(4)之懒加载

    延续:iOS开发基础-图片切换(3),对(3)里面的代码用懒加载进行改善. 一.懒加载基本内容 懒加载(延迟加载):即在需要的时候才加载,修改属性的 getter 方法. 注意:懒加载时一定要先判断该 ...

  9. iOS开发基础-图片切换(3)之属性列表

    延续:iOS开发基础-图片切换(2),对(2)里面的代码用属性列表plist进行改善. 新建 Property List 命名为 Data 获得一个后缀为 .plist 的文件. 按如图修改刚创建的文 ...

随机推荐

  1. 记录一个linux下批处理的代码

    DATA_DIR=/home/liupan/.navinsight/data/dataset_rec SHELL_DIR=/home/liupan/workspace/nvi_postprocessi ...

  2. Hadoop InputFormat详解

    InputFormat是MapReduce编程模型包括5个可编程组件之一,其余4个是Mapper.Partitioner.Reducer和OutputFormat. 新版Hadoop InputFor ...

  3. Ubuntu安装LAMP环境(PHP5.6) 以及下载安装phpmyadmin

    参考路径: http://blog.nciaer.com/?p=133 修改apache(2.4.18)的web路径时, 需要将 /etc/apache2/sites-available/000def ...

  4. SpringBoot | 第十一章:Redis的集成和简单使用

    前言 上几节讲了利用Mybatis-Plus这个第三方的ORM框架进行数据库访问,在实际工作中,在存储一些非结构化或者缓存一些临时数据及热点数据时,一般上都会用上mongodb和redis进行这方面的 ...

  5. js重载的实现

    在JavaScript高级程序设计书中看到 ECMAScript函数中不能想传统意义上那样实现重载.而在其他语句中(Java)中,可以为一个函数编写两个定义,只要两个定义的签名(接受的参 数的类型和数 ...

  6. weex 项目搭建

    第一步:安装依赖 npm install -g weex-toolkit weex -v //查看当前weex版本 weex update weex-devtool@latest //@后标注版本后, ...

  7. Unity3d 游戏中集成Firebase 统计和Admob广告最新中文教程

    之前写过俩相关的教程,最近发现插件官方更新了不少内容,所以也更新一篇Firebase Admob Unity3d插件的教程,希望能帮到大家. Firebase Admob Unity3d插件是一个Un ...

  8. linux中python安装

    1.查看当前环境中是否存在python安装包 [zyj@localhost ~]$ rpm -qa | grep python gnome-python2-gnome--.el6.x86_64 pyt ...

  9. redis在Windows下以后台服务一键搭建集群(单机--伪集群)

    redis在Windows下以后台服务一键搭建集群(单机--伪集群) 一.概述 此教程介绍如何在windows系统中同一台机器上布置redis伪集群,同时要以后台服务的模式运行.布置以脚本的形式,一键 ...

  10. ubuntu下JDK安装(更新旧版本JAVA)

    1.sudo apt-get install openjdk-8-jre openjdk-8-jdk 2.默认会安装在 路径为 /usr/lib/jvm/java-7-openjdk-amd64 下面 ...