2011-01-21 19 views
6

私はページコントロールに関しては初心者ですから、私のタイトルが私の望むものと一致すれば100%は分かりません。私はUIPageControlを作成して、ユーザーが画面上をスワイプすると、ビューが別のビューに切り替わり、画面の下部にあるUIPageControllerが自動的に更新されるようにしたいと考えています。また、私の要求をさらに混乱させるために、私は画面の下部に、ビューの変更に応じて置かれたままになるタブバーが必要です。下部の http://img.slidetoplay.com/screenshots/ramp-champ_5.jpgUIPageControlを使用したUIView

バーを入れたまましばらく画面が動くの項目の残り:

本の偉大な例では、Iconfactoryのランプチャンプです。これを行う最も簡単な方法は何でしょうか?

編集:私は、私はUISrollViewを使用する必要があります知っている、私はちょうどそれを実装について移動する方法がわからない...

答えて

22

私は何を探しているが実際に設定pagingEnabledとUIScrollViewであると考えていますはい。スクロールビューを通常のUITabBarの上に表示することができます。あなたは小さな点を得るためにUIPageControlを使います。スクロールビューの適切なデリゲートメソッドを実装することで、UIScrollViewがページにスクロールするときにプログラムで更新できます(-scrollViewDidScroll:)。

2つのivars:scrollViewとpageControlがあるとします。スクロールビューのページ数を知ると、scrollViewのcontentSizeを設定できます。これは、scrollViewの境界の倍数でなければなりません。例えば、ページ数が静的であれば、あなたの-viewDidLoadでそれをハードコーディングすることができます...

- (void)viewDidLoad { 
    // Any other code. 

    scrollView.pagingEnabled = YES; 
    scrollView.contentSize = CGSizeMake(scrollView.bounds.size.width * 3, scrollView.bounds.size.height); // 3 pages wide. 
    scrollView.delegate = self; 
} 

次に、あなたの小さなドットを更新する...

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 

    CGFloat pageWidth = scrollView.bounds.size.width; 
    NSInteger pageNumber = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    pageControl.currentPage = pageNumber; 
} 
+0

ありがとう、これを行う方法に関するソースコードはありますか? (私は何も見つけることができません) –

+0

@Andy B、はい。私は標準的な方法で私の答えを編集しました。 –

+0

私は今、本当に馬鹿だと感じています。それでもウォーキングはありません。 –

2

あなたが使用する必要がありますUIScrollView

あなたはあなたがするscrollView

int amountOfFrames = 10; 
    scrollView.pagingEnabled = TRUE; 
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * amountOfFrames, scrollView.frame.size.height); 
    scrollView.delegate = self; 

と呼ばれる名前のIVARを持っていると仮定するとその後、あなたはあなたのページのコントロールが

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{ 
    // Switch the indicator when more than 50% of the previous/next page is visible 
    CGFloat pageWidth = scrollView.frame.size.width; 
    int page = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    pageControl.currentPage = page; 
} 

を更新できるように、コンテンツはあなたが表示されます場合は、理想的lazyloadそこに、あなたがこれらのscrollviewの内側にスクロール可能にしたいものは何でもコンテンツを配置する必要があり、必要なデリゲートメソッドを実装する必要がありますヒープメモリがたくさん必要になります。scrollviewDidScrollを使用して、必要な位置でコンテンツを削除して追加してください。

+0

助けてくれてありがとう、私にはあまり意味がありません。私は約7ヶ月しか開発していません。ソースコードはありますか? –

関連する問題