簡易スライドビューア [19] 指定のページを表示する

2010年10月22日金曜日 | Published in | 0 コメント

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

[前回] Cocoaの日々: 簡易スライドビューア [18] スライドショー動作完了

指定のページを表示するメソッドを追加した。地味だがこういうのは重要。

実装


まずインターフェイスを用意する。ページのプロパティとアニメーション指定ができるメソッドの2つ。UIScrollView.contentOffset がこのスタイルを取っている。
@property (nonatomic, assign) NSInteger currentPage; // start with 0
- (void)setCurrentPage:(NSInteger)page animated:(BOOL)animated;

実装コードはこんな感じ。
- (void)setCurrentPage:(NSInteger)page animated:(BOOL)animated
{
 if (page == self.currentImageIndex) {
  return;
 }

 NSInteger numberOfViews = [self numberOfImages];

 if (page < 0) {
  page = 0;
 } else if (page >= numberOfViews) {
  page = numberOfViews - 1;
 }
 
 self.currentImageIndex = page;
 self.contentOffsetIndex = page;
 self.pageControl.currentPage = page;
 
 for (int index=0; index < kMaxOfScrollView; index++) {
  [self setImageAtIndex:self.currentImageIndex+index-kLengthFromCetner
     toScrollView:[self.innerScrollViews objectAtIndex:index]];
 }
 

 [self relayoutViewsAnimated:NO];
 [self layoutSubviewsWithSizeChecking:NO animated:animated];

}

- (void)setCurrentPage:(NSInteger)page
{
 [self setCurrentPage:page animated:YES];
}

- (NSInteger)currentPage
{
 return currentImageIndex_;
}
プロパティは自前実装とする。


サンプル実行


4ページ目を初期表示するようにしてみた。
self.galleryView.currentPage = 3;

初期状態

プロパティを設定するとスクロールのアニメーションが動き



目的のページで止まる。



ソースコード


GitHub からどうぞ。
EasyGallery at 2010-10-22 from xcatsan's iOS-Sample-Code - GitHub

Responses

Leave a Response

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