现在的位置: 首页 > 综合 > 正文

照片多张浏览

2013年12月08日 ⁄ 综合 ⁄ 共 1308字 ⁄ 字号 评论关闭

//照片多张浏览 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

抱歉!评论已关闭.