Способы улучшения производительности прокрутки UIWebView?

Я создаю приложение, которое включает в себя UIWebView содержащий большое количество изображений, CSS, встроенное видео и обработчики краев JavaScript. Производительность прокрутки – затворничество, и я ищу информацию о наиболее эффективных способах ее улучшения.

Что, если какая-либо из следующих характеристик приведет к прокрутке laggy UIWebView ? Какие другие факторы могут мешать работе?

  • Количество изображений
    • Должен ли я удалять изображения из DOM, когда пользователь прокручивается мимо них и добавляет их обратно, если они прокручивают назад?
  • Размер изображений
    • Будет ли качество изображения Retina в веб-представлении влиять на производительность прокрутки намного больше, чем на более мелкие версии?
  • Масштабирование изображений
    • Будет ли изменение размера изображений раньше времени иметь большую разницу, а не полагаться на веб-представление для масштабирования на основе объявлений, таких как width: 100%; ?
  • CSS
    • Я избегал box-shadow , но есть ли другие свойства CSS, которые также известны тем, что негативно влияют на производительность прокрутки?

Если есть какие-то другие ресурсы или инструменты, которые можно использовать для профилирования, я люблю их слышать.

Это тот ответ, который я получил от технической поддержки Apple Developer некоторое время назад:

В настоящее время мы не предоставляем никаких механизмов для оптимизации предоставления UIWebView. Причина, по которой вы видите разницу, связана с тем, что Mobile Safari и UIWebView не используют один и тот же механизм рендеринга.

Производительность зависит от загруженного содержимого. Если используются javascripts или используемые плагины, это может помешать работе.

Я рекомендую вам отправить отчет об ошибке на странице http://developer.apple.com/bugreporter/, в котором подробно описывается ваша ситуация. Это также будет информировать вас о статусе вашего отчета об ошибке.

Возможной альтернативой UIWebView будет библиотека DTCoreText с открытым исходным кодом: https://github.com/Cocoanetics/DTCoreText , которая поддерживает приложение Float Reader: http://itunes.apple.com/us/app/float-reader / id447992005? т = 8

Ребята из LinkedIn провели обширную работу с UIWebView и HTML5 в своем iPad-приложении. Весь их канал, который тяжел с изображениями, текстами и видеороликами, отображается внутри UIWebView.

Следующее сообщение в блоге должно дать вам массу отправных точек для повышения производительности

LinkedIn для iPad: 5 технологий для плавной бесконечной прокрутки в HTML5

Некоторое время назад у меня была аналогичная проблема. Я обнаружил, что возможность веб-просмотра внутри прокрутки улучшает производительность прокрутки. После того, как веб-просмотр закончил загрузку, я отключил прокрутку в веб-просмотре, установил кадр веб-просмотра и контент contentSize scrollview, чтобы он был размером с содержимым веб-просмотра.

 -(void) webViewDidFinishLoad:(UIWebView *)webView { float size = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue]; [self.scrollView setContentSize:CGSizeMake(self.view.frame.size.width, size)]; [webView setFrame:CGRectMake(webView.frame.origin.x, webView.frame.origin.y, webView.frame.size.width, size)]; [(UIScrollView*)[webView.subviews objectAtIndex:0] setScrollEnabled:NO]; } 

Я предполагаю, что webview не загружает изображение, пока оно не появится на экране, что вызвало заикание, и, поместив его в scrollview и установив кадр в размер содержимого, он должен загрузить их раньше времени, но я не уверен. Я также уверен, что это имеет последствия (т. Е. Увеличение использования памяти спереди), но у меня никогда не было проблем с этим.

  • событие touchMove на мобильном сафари - приводит к перетаскиванию всей страницы
  • iOS Отказано в подключении, поскольку оно не указано ни в директиве connect-src, ни в директиве default-src политики безопасности контента
  • Не удалось выполнить команду com.apple.WebKit.WebContent
  • Что делает <meta name = "viewport" content = "width = device-width"> в ландшафтном режиме на iOS?
  • Проблемы с webkit translate3d (peek-thru)
  • Как остановить MPAVItem сбой моего приложения iOS с видео в моем UIWebView?
  • Нажатие WKWebView на UINavigationController вызывает ui отставание
  • Прокрутка прокрутки IOS -webkit-overflow на неправильной оси или вообще не
  • Safari: неправильный расчет видового экрана для размеров шрифта
  • iPhone iOS не будет корректно отображать окно тени
  • Улучшение скорости CSS3 на iPad
  • Давайте будем гением компьютера.