Я делаю то же самое с представлением прокрутки - ленивая загрузка изображений.На самом деле нам пришлось загрузить эскиз, который растягивается (делая размытую версию изображения в низком разрешении), а затем загрузить реальное изображение, когда страница отображается на 100%.
Что мне нужно было сделатьБыл использован следующий код в scrollViewDidScroll: scrollView.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (!_isCurrentlyRotating) {
CGFloat pageWidth = _scrollView.frame.size.width;
int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth)+1;
if (_currentPage != page)
[self setCurrentPage:page];
}
}
Выше вычисляется страница, которая будет отображаться (как ваша прокрутка).Это на самом деле изменит номер текущей страницы, когда просмотр страницы отображается на 50%.Это может использоваться в сочетании с элементом управления страницей для выделения текущей точки страницы.
Использование вышеизложенного (с включенной подкачкой в представлении прокрутки), когда пользователь использует свой палец для изменения страницы (нормальное поведение) scrollViewDidEndDecelerating: scrollView вызывается, когда страница отображается на 100%.Под 100% я имею в виду, что вы можете видеть только одну страницу, не являющуюся частью другой части.
Но у нас есть кнопка «Начать заново» в конце представления прокрутки, которая вызывает мою функцию scrollToPage:.
- (void) scrollToPage:(int)page {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * page;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
Использование scrollRectToVisible: animated: метод не вызывает метод scrollViewDidEndDecelerating: поэтому я просто добавил метод повышения резкости (который просто загружает изображение с высоким разрешением в представлении изображения) для обоих методов, чтобы он вызывалсяесли пользователь прокручивает или нажимает кнопку «Пуск поверх».
- (void) scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
[self sharpenImageView];
}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
[self sharpenImageView];
}
Надеюсь, это поможет!