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