私はスクロールビューで同じことをしています - 画像の遅延ロード。実際には、引き伸ばされたサムネイルをロードして (画像のぼやけた低解像度バージョンを作成)、ページが実際に 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% 表示されると、実際には現在のページ番号が変更されます。これをページ コントロールと組み合わせて使用すると、現在のページ ドットを強調表示できます。
上記を使用して (スクロール ビューでページングを有効にして)、ユーザーが指を使用してページを変更すると (通常の動作)、ページが 100% 表示されると scrollViewDidEndDecelerating:scrollView が呼び出されます。100% とは、別のページの一部ではなく、1 つのページのみを表示できることを意味します。
しかし、スクロール ビューの最後に、私の 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];
}
これが役立つことを願っています!