我有一个需要渲染大型SVG文件的项目。到目前为止,我一直在使用UIWebView,它可以工作,但渲染时间可能超过10秒。在旧设备上,应用程序内存不足。
我想出了几种可能的解决方案:
SVG是在服务器端生成的,所以我也可以接受这方面的建议(即改变格式)
我很欣赏那些在选择前进方面有这方面经验的人的一些指示。你真诚的感谢!
答案 0 :(得分:2)
好!经过多次试验和错误后,我相信我在iOS中拥有大量SVG的平滑滚动视图。
基本上,您需要将svg切割成tile并使用UIWebViews在UIScrollView中渲染它们。
确保从主线程异步加载切片,这可能很棘手,因为您无法从后台线程向UIWebView执行操作。如果您尝试在scrollviewdidscroll中加载图块,则会遇到波动的帧速率。
此外,您可能希望在UIWebViews中使用一个小的重置css来摆脱瓷砖周围的丑陋填充。
* {
margin:0;
padding:0;
}
为我做了。
答案 1 :(得分:0)
PDF是Adobe Illustrator的原生格式,在iOS上得到很好的支持,因此它绝对是矢量图形的一个选项。渲染复杂的矢量图形总是非常耗费CPU,因此您必须尝试找出更快的内容。鉴于iOS上的PDF堆栈比WebKit中的SVG支持要成熟得多,我猜它可能会更快,但它在很大程度上取决于您的输入文件。你可以查看Apple的ZoomingPDFViewer sample code,它使用CATiledLayer
和PDF来开始。
答案 2 :(得分:0)
我编写了一个可以处理Inkscape无法处理的大型SVG文件的系统。 它将SVG转换为JavaScript和HTML。 公共版本在比我的开发环境慢的Web服务器上运行。 我想测试你所谓的大型SVG。如果它工作,它将使用JavaScript和HTML创建SVG,并将修改SVG,以便用户可以看到它正在构建。 您是否有可能发送中型和大型SVG,以便我可以尝试在开发和测试中进行转换?
借口拼写 - ipod