简单说,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. Table AUD$

    How to Truncate, Delete, or Purge Rows from the Audit Trail Table AUD$  转到底部 PURPOSE This document e ...

  2. 【Linux】linux压缩和解压缩命令大全

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...

  3. <Linux系统isosize指令用法>

    isosize命令:iso9660文件系统大小显示 isosize命令用于显示iso9660文件系统的大小,还文件可以使普通文件,也可以是块设备,如/dev/sr0或者/dev/sda.如果没有相关选 ...

  4. 整理:sql server 中sql语句执行顺序

    SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是 ...

  5. Redis Windows环境搭建

    简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.内置复制 ...

  6. 【踩坑】遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 报错

    今天在重做 iblog 客户端时,测试接口情况,发现了 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  7. 粗看ES6之变量

    标签: javascript var定义变量面临的问题 可以重复定义 无法限制变量不可修改 无块级作用域 ES6变量定义升级 新增let定义变量 新增const定义常量 let特性 有块级作用域 不可 ...

  8. (转载)C#线程优先级详解

    计算机中经常会有多个任务同时运行,其中总有一些看起来更紧急,更需要优先完成.比如我们现在有两个任务,一个任务是下载一部电影,另一个任务是检测用户的输入.显然及时响应用户操作应具有更高的优先级,因为我们 ...

  9. 【extjs6学习笔记】1.14 初始: ViewModel

    ViewModel是一个管理特定UI组件数据的类. 可以将其视为特定视图的记录容器. 它支持与UI组件的双向数据绑定,只要用户在视图中更改数据,它具有最新的副本. 与模型不同,它不能包含代理,因此它不 ...

  10. 时序js插件cubism使用

    document http://iwantmyreal.name/blog/2012/09/16/visualising-conair-data-with-cubism-dot-js https:// ...