//照片多张浏览 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(如果有错误,欢迎指正,大家共同学习):