iPhone dev: увеличить скорость прокрутки в UIWebView?
У меня есть приложение, в котором я визуализирую локальные HTML-файлы в UIWebView. Файлы, однако, иногда большие, и добраться туда, где вы хотите занимает много времени со скоростью прокрутки по умолчанию. Есть ли способ увеличить скорость вертикальной прокрутки UIWebView?
5 ответов
В iOS 5 мы можем получить доступ к scrollView
свойства UIWebView
.
Если вы нацелены на iOS 5+, Вы можете просто позвонить:
webView.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;
найти подвида UIWebView, который является UIScrollView, а затем установить decelerationRate to UIScrollViewDecelerationRateNormal. Это делает UIWebView таким же быстрым, как обычный UIScrollView.
в iOS 4/5 мы можем просто использовать последнее подвидение UIWebView.
UIScrollView *scroll = [webView.subviews lastObject];
if ([scroll isKindOfClass:[UIScrollView class]]) {
scroll.decelerationRate = UIScrollViewDecelerationRateNormal;
}
по умолчанию decelerationRate UIWebView в UIScrollView является 0.989324, а UIScrollViewDecelerationRateFast составляет 0,99, а UIScrollViewDecelerationRateNormal это 0.998.
этот метод не использует частный API.
Поиск subview UIWebView, который отвечает на -setScrollDecelerationFactor: (Это uiscroller-частный класс, который является единственным подвидом UIScrollView). Вы обнаружите, что он принимает те же коэффициенты замедления, определенные для открытого класса UIScrollView:
- (void)webViewDidFinishLoad:(UIWebView *)aView {
id decelerator = [aView viewWithSelector:@selector(setScrollDecelerationFactor:)];
[decelerator setScrollDecelerationFactor:UIScrollViewDecelerationRateNormal];
}
обратите внимание, что метод, который я использую viewWithSelector: - это метод, который я определил в категории UIView. Предположительно, если UIWebView изменится в будущем, мой поиск будет верните nil, и этот метод станет no-op.
рассмотрели добавление # теги в HTML на значительные границы?
вы можете использовать собственный пользовательский интерфейс для реализации закладок или ToC для облегчения навигации или просто вставлять ссылки на соответствующие цели прямо в html.
Если вы "ускоряете прокрутку", ваше приложение рискует быть отклоненным за нестандартность, поскольку это может запутать пользователей, которые привыкли к прокрутке webviews со стандартным "ощущением".
старый вопрос, но эти настройки или трюк действительно помогли мне, даже в 2018 году.
следуйте этим простым трюкам кодирования, чтобы улучшить Android WebView
производительность:
WebView mWebView = new WebView(this);
WebSettings settings = mWebView.getSettings();
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(false);
settings.setJavaScriptEnabled(true);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setScrollbarFadingEnabled(true);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setDomStorageEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}