Q: TouchVG是否针对绘制效率做了优化?
A: TouchVG针对绘制效率做的优化有:
a、包络框检查:在视图外的图形不显示
b、九宫格剪裁:对直线段、折线、多边形进行剪裁显示
c、后台异步显示:regenAll重新生成所有图形时,在单独的CALayer和GCD线程中绘制,绘制完后再显示到视图,不阻塞主线程交互和显示。例如重绘10000条曲线在后台绘制1秒后显示到视图,在此过程中视图不会白屏或黑屏。
d、动态拖曳显示是在单独的视图中,可以快速拖动图形或亮显图形,不影响主视图上的静态图形显示内容。(如果在同一个视图连续移动10000个曲线图形会引起不断重绘肯定很卡,如果将这些图形放在主视图显示,拖动的100个图形放在另一个视图显示则很流畅)
Q: TouchVG是否适用于移动平台的大数据量绘制?
A: 在iPad3上显示10000条曲线绘制小于3秒,是使用addShapesForTest函数添加的随机图形,iPhone5上更快。如果是折线图形则更快,显示20-50万条随机直线段约1秒。我在毕业论文33-37页做过性能分析实验,显示参数设置不当会引起性能大幅降低。
如果需要显示10万条以上、50万顶点以上的复杂图形,不要全部重新绘制,有以下建议:
a、可以进行分区块多线程绘制;
b、可以针对不同放缩级别显示不同细节程度;
c、可以逐步渲染例如将填充作为最后一个渲染步骤。
d、针对动态平移和放缩,采取截图放缩或外框显示。
更专业的显示可以使用OpenGL ES,相应的参考开源项目有MonkVG、Inkpad,但其开发难度很高,对开发人员技术要求很高,不适合短期内实现。
Q: TouchVG的兼容性具体情况如何?是否针对iOS6,iOS7及诸多Android版本做过兼容性测试?是否能够兼容后续系统?
TouchVG 兼容 iOS 4.3-7.0,对多个版本做过兼容性测试,包括编译设置、代码格式、GCD和内存技术兼容测试。由于没有使用特殊的API,所以具有向前兼容性,应该适合iOS 8等新版本。
Q: TouchVG与系统控件等的兼容性如何?是否可以简单融合,是否会出现显示上的问题?(如遮盖及偏移等)
A: TouchVG使用UIKit、CoreGraphics渲染图形,是在普通UIView中显示图形的,这和iOS自身的显示规律是相同的,可以与系统控件密切融合。可以在自定义控件内显示图形,也可以在图形视图上显示按钮、进行任意的界面布局。同时基于TouchVG的模块还支持CoreAnimation动画特效。
Q: 请问我可以通过何种途径获得文档?如果暂无此文档,之后使用TouchVG的话,是否有足够精力提供技术支持?
A: vgios-demo、iOSColorPad等项目里有较多使用例子,vgios里也有不少注释,可以通过阅读实现和示例、动手尝试获取更多内容。QQ群中也有一些高手,可以相互讨论学习。如果能积极分享知识、心得、参与开源项目(报告BUG、建议、提交PR)则还能获得更多绘图项目的邀请。使用TouchVG,通常能够得到一周内的免费响应支持,但不做责任保证。