これに関するチュートリアルを検索して検索しましたが、探しているものはありません。Appleのサンプルを試してみましたが、色だけで、ビューにする方法がわかりません。私が探しているのは、ページ コントロールを表示しながらページングする画面だけです。スクロール ビュー ページを表示するたびに、完全に異なるビューを表示したいと考えています。テキストや画像が異なるのではなく、ビューが異なります。iPhone や ESPN Scorecenter アプリのホーム画面によく似ています。助けてください!ありがとうございました。
5 に答える
見つかった例は複雑で、これは私にとって読みやすいので、このユニバーサルソリューションを作成しました。コードは自明である必要があります。
- (IBAction)changePage:(id)sender {
_pageControlUsed = YES;
CGFloat pageWidth = _scrollView.contentSize.width /_pageControl.numberOfPages;
CGFloat x = _pageControl.currentPage * pageWidth;
[_scrollView scrollRectToVisible:CGRectMake(x, 0, pageWidth, _scrollView.frame.size.height) animated:YES];
}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
_pageControlUsed = NO;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (!_pageControlUsed)
_pageControl.currentPage = lround(_scrollView.contentOffset.x /
(_scrollView.contentSize.width / _pageControl.numberOfPages));
}
これは、状態を格納するための変数を必要とせずに @ReneDohan の回答と同じことを行います
- (IBAction)changePage:(id)sender {
CGFloat x = self.pageControl.currentPage * self.scrollView.frame.size.width;
[self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.isDragging || scrollView.isDecelerating){
self.pageControl.currentPage = lround(self.scrollView.contentOffset.x / (self.scrollView.contentSize.width / self.pageControl.numberOfPages));
}
}
このフレームワーク : https://github.com/AdrianFlorian/AFImageViewerを試して、ページ コントロールを使用してスクロール ビューに画像を表示し、現在のページを示します。
まだドキュメントを追加していませんが、プロジェクトを複製すると例を見ることができます。
簡単にできます: - URL の配列 (画像の URL) を指定するだけで、別のスレッドでインターネットから画像をダウンロードします - UIImage オブジェクトの配列を指定します - デリゲートを実装し、各ページの画像を自分で管理します
関連する質問があります: UIPageControl を使用して複数のビューを作成するにはどうすればよいですか? 、これを行うための本当に良い方法は、次のブログ投稿で説明されています: http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html .
この質問のデモ プロジェクトを作成しました。訪問してください: https://github.com/lenhhoxung86/PageControlDemo