Как улучшить производительность прокрутки UIWebView?

Кажется, действительно трудно улучшить производительность UIWebView, особенно для таких сайтов, как Mashable или Ars Technica, где загружаются тонны скриптов и распространены длинные многостраничные статьи.

Мне известны 3 похожих вопроса, но у них обоих нет рабочего решения:

Интересно, есть ли какие-либо решения этой проблемы. Любые предложения приветствуются.

3 ответа

Решение

Боюсь, что нет. Большие сайты остаются большими и, следовательно, потребляют много памяти.

Я бы поспорил против Брэда Ларсона: технически возможно создать веб-представление в собственном CATiledLayer (просто [webView.layer renderInContext: ]) но не имеет большого смысла. Плиточные слои загружаются лениво, как и веб-представления. Вам понадобится огромное количество точно настроенного кода, чтобы определить, когда страница закончила загрузку, затем кэшировать вещи в свой плиточный слой и так далее.

Несмотря на это, веб-просмотр на самом деле довольно оптимизирован. Я бы даже сказал, что это одна из самых оптимизированных вещей во всей iOS. Это наиболее часто используемый компонент, критичный к производительности, на всей платформе. Каждый многострочный текст является веб-представлением (например, UITextView реализован с использованием их). Если веб-просмотр не работает на каком-либо веб-сайте, вам будет довольно сложно сделать его быстрее.

Есть случаи, когда другое решение может также работать, но только если вы ищете что-то особенное. Если нет, то оставьте свои руки подальше и потратьте время в другом месте. Просто мои 2 цента...

Я действительно не знаю, может ли это помочь или является точным, учитывая вопрос, но вот что я должен сказать:

Некоторые свойства, такие как тень или градиент, и даже изображения внутри WebView сильно влияют на производительность, которую вы можете получить. Старайтесь не использовать их и / или сохранить их как можно меньше.

Некоторые приложения веб-браузера, такие как iCab и Atomic Web Browser, по-видимому, используют метод _setDrawInWebThread: и, очевидно, они разрешены в магазине приложений. Если они не используют этот метод, то они используют что-то, что идентично этому, для их UIWebView. Кто-нибудь знает наверняка, Apple отклоняет приложения, которые используют этот частный API? Могут ли они позволить этому пройти "молча"? Я удивлен, что Apple до сих пор не сделала этот API общедоступным, потому что любое приложение, которое использует UIWebView для отображения веб-страницы (и есть много приложений с высоким профилем, которые делают это, например, FlipBoard), делает устройство "нестабильным". и подпаритет, выполняющий...

Другие вопросы по тегам