Я делаю то же самое с просмотром прокрутки - ленивая загрузка изображений. На самом деле нам пришлось загрузить растянутую миниатюру (создав размытую версию изображения с низким разрешением), а затем загрузить реальное изображение, когда страница фактически отображается на 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];
}
Надеюсь, это поможет!
person
RachelD
schedule
19.01.2012