6

私はページ コントロールに関しては初心者です。そのため、私のタイトルが私が望むものと一致しているかどうか 100% 確信が持てません。ユーザーが画面をスワイプすると、ビューが別のビューに切り替わり、画面の下部にある UIPageController が更新される UIPageControl を作成したいと思います。また、私の要求をさらに混乱させるために、画面の下部にタブ バーが必要です。

この好例は、Iconfactory の Ramp Champ です: http://img.slidetoplay.com/screenshots/ramp-champ_5.jpg

画面上の残りの項目が移動している間、下部のバーはそのままです。これを行う最も簡単な方法は何ですか?

編集:UISrollViewを使用する必要があることはわかっていますが、実装方法がわかりません...

4

2 に答える 2

22

あなたが探しているのは、実際にはpagingEnabled が YES に設定されたUIScrollViewだと思います。スクロールビューを通常の UITabBar の上のビューとして残すことができます。小さなドットを取得するには、UIPageControl を使用します。スクロール ビューの適切なデリゲート メソッド (おそらく -scrollViewDidScroll:) を実装することにより、UIScrollView がページにスクロールするときにプログラムで更新できます。

scrollView と pageControl の 2 つの ivar があるとします。スクロール ビューのページ数がわかっている場合は、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;
}
于 2011-01-21T20:06:58.417 に答える
2

UIScrollViewを使用する必要があります

scrollView という名前の ivar があるとします。

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

次に、ページ コントロールを更新できるように、必要なデリゲート メソッドを実装する必要があります。

- (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; 
}

これらのスクロールビュー内にスクロール可能にしたいコンテンツを配置する必要があります。表示するコンテンツが大量のヒープメモリを必要とする場合は、scrollviewDidScroll を使用して必要な位置にコンテンツを削除および追加します。

于 2011-01-21T21:28:13.997 に答える