//照片多張浏覽 uiscrollview ,雙指放大,縮小,輕按兩下放大縮小
這裡實作的比較簡單,就是用了一個大的UIScrollview來放置多個小的UIScrollview,圖檔是放在小的UIScrollview上,大的UIScrollview實作左右滑動,小的實作放大縮小。
放大捏小依靠的是UIScrollview的代理。二輕按兩下大小變化用到了手勢:
UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap)];
singleTapGesture.numberOfTapsRequired = 1;
[self addGestureRecognizer:singleTapGesture];
UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap)];
doubleTapGesture.numberOfTapsRequired = 2;
[self addGestureRecognizer:doubleTapGesture];
[singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];
[singleTapGesture release];
[doubleTapGesture release];
特别記得要添加這句話:
[singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];
用于區分輕按兩下與單擊。
在實作這個功能的時候我遇到了一個問題,就是目前圖檔放大之後,拖拽到下一張圖,然後,傳回之前那張,發現圖檔是放大的,這樣體驗不好,于是就想在滑到了下一張圖檔的時候把上一張圖檔大小還原,于是查閱文檔,發現了下面這個代理方法可用:
- (void)scrollViewDidEndDecelerating:(ImageScrollView *)scrollView
{
int lastPage = pageControl.currentPage;
int index = fabs(photoListScrollView.contentOffset.x) / photoListScrollView.frame.size.width;
pageControl.currentPage = index;
if (index !=lastPage)
{
ImageScrollView *sView = (ImageScrollView *)[self.view viewWithTag:1000+lastPage];
[sView setZoomScale:1.0];
}
}
這個方法可以很好的解決這個問題。具體的實作可以看Demo(如果有錯誤,歡迎指正,大家共同學習):
猛戳這裡下載下傳Demo