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