2010-10-30 82 views
1

似乎很難改善UIWebView的性能,特別是對於像Mashable或Ars Technica這樣的網站來說,在這些網站中加載了大量的腳本,而且長篇多頁的文章也很常見。如何提高UIWebView滾動性能?

我所知道的3個類似的問題,但他們都沒有工作的解決方案:

我想知道這個問題是否有解決方案。歡迎任何建議。

回答

5

恐怕沒有。大網站仍然很大,因此消耗大量內存。

我會反對Brad Larson:支持自己的CATiledLayer中的webview在技術上是可行的(只是做[webView.layer renderInContext: ]),但沒有多大意義。平鋪圖層像網頁視圖一樣延遲加載。你需要大量的微調代碼來檢測頁面何時完成加載,然後將東西緩存到你的平鋪層等等。

儘管如此,webview實際上是相當優化。我甚至會爭辯說它是整個iOS中最優化的東西之一。它是整個平臺中使用最多的性能關鍵組件。每個多行文本都是一個webview(UITextView是使用它們實現的,例如)。如果Web瀏覽器在某個網站上出現故障,您將很難加快瀏覽速度。

有些情況下,不同的解決方案可能也適用,但前提是您需要尋找某種特殊用途。如果你不是,那就放下手,把時間花在別的地方。只是我的2美分...

+4

感謝您的回答。我向蘋果開發者技術支持詢問了這個問題,這就是他們告訴我的:「目前,我們沒有提供任何優化UIWebView渲染的機制。你看到不同的原因是由於Mobile Safari和UIWebView沒有使用相同的渲染引擎,性能取決於加載的內容,如果使用javascripts或正在使用插件,可能會影響性能。我建議您提交詳細說明您的情況的錯誤報告。這也會讓你知道你的bug報告的狀態。「 – 2010-11-05 23:50:23

+0

好吧,我想這聽起來很相似,」最終它可能會變得更快「 – 2010-11-06 14:13:40

1

我真的不知道這是否可以幫助或者是給出準確的問題,但這裏是我不得不說:

狀陰影或梯度,甚至某些屬性WebView內部的圖像會影響您可以獲得的很多表演。儘量不要使用它們和/或儘可能少地保留它們。

1

一些網絡瀏覽器應用程序,如iCab和原子網絡瀏覽器似乎使用_setDrawInWebThread:方法,顯然他們被允許在應用程序商店。如果他們沒有使用這種方法,那麼他們正在使用與UIWebViews相同的東西。有誰知道肯定蘋果拒絕使用這個私人API的應用程序?他們可以讓那個人「靜靜地」走嗎?我很驚訝蘋果到目前爲止還沒有成爲一個公共API,因爲任何使用UIWebView來顯示網頁的應用程序(並且有許多高端應用程序這樣做,例如FlipBoard)會使設備看起來「波濤洶涌」 '和低於標準表演...