簡易スライドビューア [13] UIPageControl を追加

2010年9月29日水曜日 | Published in | 2 コメント

このエントリーをはてなブックマークに追加

UIPageControl を追加してみた。

追加自体は簡単で UIPageControl のインスタンスを作成し、表示したい UIViewに追加するだけ。
// setup page control
 CGRect pageControlFrame = CGRectMake(
            0, self.bounds.size.height-DEFAULT_MARGIN_HEIGHT,
            self.bounds.size.width, DEFAULT_MARGIN_HEIGHT);
 self.pageControl = [[[UIPageControl alloc] initWithFrame:pageControlFrame] autorelease];
 self.pageControl.autoresizingMask =
  UIViewAutoresizingFlexibleLeftMargin  |
  UIViewAutoresizingFlexibleWidth       |
  UIViewAutoresizingFlexibleRightMargin |
  UIViewAutoresizingFlexibleTopMargin   |
  UIViewAutoresizingFlexibleHeight      |
  UIViewAutoresizingFlexibleBottomMargin;
 self.pageControl.hidesForSinglePage = NO;
 [self.pageControl addTarget:self
       action:@selector(pageControlDidChange:)
      forControlEvents:UIControlEventValueChanged];
 [self addSubview:self.pageControl];

今回少し手間取ったのは UIPageControl をクリックした時の処理。UIControlEventValueChanged イベントが発生すると addTarget:action:forControlEvents: で指定したメソッドが呼び出されるので、この中で指でスクロールした時と同じ処理を行う必要がある。スクロール位置を決めるのに -[UIScrollView scrollRectToVisible:animated:] を使ってみたが、動作が怪しくなったので UIScrollView.contentOffset の指定に切り替えた。このままだとアニメーションしないので +[UIView beginAnimations:context:] で囲ってやる。
[UIView beginAnimations:nil context:nil];
 self.scrollView.contentOffset = CGPointMake(
   self.contentOffsetIndex*size.width, 0);
 [UIView commitAnimations];

ソースコードは GitHub からどうぞ。
EasyGallery at 2010-09-29 from xcatsan's iOS-Sample-Code - GitHub


参考情報


UIPageControl の扱いは下記が参考になった。

Responses

  1. 匿名
    2011年2月23日 1:38

    はじめまして。
    ソースコードを参考にさせていただきました。

    ところで、このPageControlなんですが、カレントのページを基準に
    前後1ページにしか切り替わらないと思うんですが、ダイレクトに指定ページへ
    遷移させるにはどうすれば良いのでしょうか?

  2. 匿名
    2011年2月23日 1:38

    はじめまして。
    ソースコードを参考にさせていただきました。

    ところで、このPageControlなんですが、カレントのページを基準に
    前後1ページにしか切り替わらないと思うんですが、ダイレクトに指定ページへ
    遷移させるにはどうすれば良いのでしょうか?

  3. xcatsan says:
    2011年2月24日 13:08

    こんにちは。
    ダイレクトに指定ページへ遷移させるには UIScollView をそのページ位置へスクロールさせます。この後の連載で取り上げているので良かったら参考にしてみてください。

    http://cocoadays.blogspot.com/2010/10/19.html

  4. xcatsan says:
    2011年2月24日 13:08

    こんにちは。
    ダイレクトに指定ページへ遷移させるには UIScollView をそのページ位置へスクロールさせます。この後の連載で取り上げているので良かったら参考にしてみてください。

    http://cocoadays.blogspot.com/2010/10/19.html

Leave a Response

人気の投稿(過去 30日間)