指定のページを表示するメソッドを追加した。地味だがこういうのは重要。
実装
まずインターフェイスを用意する。ページのプロパティとアニメーション指定ができるメソッドの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