簡體   English   中英

需要在iOS中處理大型矢量圖形的建議

[英]Need advice handling large vector graphics in iOS

我有一個項目需要渲染大型SVG文件。 到目前為止,我一直在使用UIWebView,它可以工作,但渲染時間可能超過10秒。 在舊設備上,應用程序內存不足。

我想出了幾個可能的解決方案:

  • 使用CATiledLayer(但我找不到用svg做任何方法)
  • 首先對SVG進行柵格化,將它們分開,然后使用平鋪圖層(雖然這在第一次運行時會非常慢)
  • 使用PDF代替(雖然我不確定這是否對所有wth矢量有幫助 - 任何有經驗的人?)

SVG是在服務器端生成的,因此我也對這方面的建議持開放態度(即改變格式)

我很欣賞那些在選擇前進方面有這方面經驗的人的一些指示。 您真誠的感謝!

好的! 經過多次試驗和錯誤后,我相信我在iOS中有大量SVG的黃油光滑滾動視圖。

基本上,您需要將svg切割成tile並使用UIWebViews在UIScrollView中呈現它們。

確保從主線程異步加載切片,這可能很棘手,因為你不能從后台線程向UIWebView做東西。 如果您嘗試在scrollviewdidscroll中加載切片,則會遇到波動的幀速率。

此外,您可能希望在UIWebViews中使用一個小的重置css來擺脫瓷磚周圍的丑陋填充。

* {
 margin:0;
 padding:0;
}

為我做了

PDF是Adobe Illustrator的原生格式,在iOS上得到很好的支持,因此它絕對是矢量圖形的一個選項。 渲染復雜的矢量圖形總是非常耗費CPU,因此您必須嘗試找出更快的內容。 鑒於iOS上的PDF堆棧比WebKit中的SVG支持要成熟得多,我猜它可能會更快,但它在很大程度上取決於您的輸入文件。 您可以查看Apple的ZoomingPDFViewer示例代碼 ,它使用帶有PDF的CATiledLayer來開始。

我寫了一個系統,可以處理Inkscape無法處理的大型SVG文件。 它將SVG轉換為JavaScript和HTML。 公共版本在比我的開發環境慢的Web服務器上運行。 我想測試你所謂的大型SVG。 如果它工作,它將使用JavaScript和HTML創建SVG,並將修改SVG,以便用戶可以看到它正在構建。 您是否有可能發送中型和大型SVG,以便我可以嘗試在開發和測試中轉換它們?

借口拼寫 - ipod

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM