Я прокрутил вниз веб-страницу с загруженной страницей. Теперь я хочу программно вернуться наверх загруженной страницы. И я хочу анимированную прокрутку.
Я реализовал следующее решение:
__auto_type animation = ^{
self.webView.scrollView.contentOffset = CGPointZero;
};
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionBeginFromCurrentState
animations:animation
completion:NULL];
Я заметил, что во время анимации фон мигает. Я исследовал проблему и обнаружил, что во время анимации веб-представление отображается не полностью (т.е. из текущей позиции в целевую), а только в видимой области вокруг целевого значения смещения содержимого с добавлением некоторой дополнительной области. Например. для моей высоты видимой области 667 и смещения целевого содержимого (0, 0) граница любовника визуализированной области находится где-то в диапазоне [1000, 1200]. Кажется, это значение является постоянным и не зависит от модели iPhone или версии iOS.
Я заметил, что если я установлю значение смещения содержимого в пределах диапазона визуализации перед запуском анимации, фон не будет мигать, и моя проблема будет решена. То есть следующая строка добавлена до того, как приведенный выше код решит мою проблему:
self.webView.scrollView.contentOffset = CGPointMake(0, 400);
Похоже, Apple провела некоторую оптимизацию процесса рендеринга. Интересно, смогу ли я использовать эту проблему в своем коде. Мои вопросы следующие:
а. Могу ли я получить нижнюю границу отображаемой области для смещения целевого содержимого?
б. Не могу ли я управлять этим значением, т.е. изменить это значение или отключить эту оптимизацию для моей операции?