iOS图片浏览器控件 放大,缩小,UIScrollView -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    图片浏览器主要通过 UIScrollView 实现 在一个大的ScollView里面套 n个ScollView

    UIScrollView里主要是有两个属性,contentSize和contentoffset , contentSize 是设定UIScrollView的可交互的大小,contentoffset偏移量

   

设置第一层 UIScollView 主要是设置 contentSize 和 contentoffset , contentSize 是根据图片的个数来设定,contentoffset根据当前图片编号设定    wholeScoll = [[UIScrollView alloc]initWithFrame.:CGRectMake(0, 0, myScreenWidth, myScreenHeight)];    wholeScoll.contentOffset = CGPointMake(wholeScoll.frame.size.width*mcurpage, 0);   wholeScoll.contentSize = CGSizeMake(myScreenWidth*mImgLocationArr.count, myScreenHeight);        // 主要代码是通过for 循环添加第二层UIScrollView      for (int i = 0; i<mImgLocationArr.count; i++) {        //设置 imageview          UIImageView * imgview = [[UIImageView alloc]initWithFrame.:CGRectMake(0, 0, myScreenWidth, myScreenHeight)];          imgview.contentMode = UIViewContentModeScaleAspectFit;        //设置 scrollview          UIScrollView * singleview = [[UIScrollView alloc]initWithFrame.:CGRectMake(myScreenWidth*i,0,myScreenWidth, myScreenHeight)];          [wholeScoll addSubview:singleview];          [singleview addSubview:imgview];        // 添加手势          [self addGestureRecognizer];    }

    图片浏览器中图片可以左右滑动,可以双击放大,可以手势捏合放大缩小

    图片浏览器中主要有三种手势分别是单击 singleTap 双击doubleTap 捏合 pinchGesture 和UIScrollView自带的滑动手势

    singleTap 手势主要是返回上一页面,如果触发singleTap的时候图片已经放大,那么先将图片初始化大小和坐标

    因为singleTap 和 doubleTap 是属于同一手势类,会产生手势冲突,所以需要

    [singleTap requireGestureRecognizerToFail:doubleTap];在执行doubleTap的时候注销掉singleTap

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~然后高潮来了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我是可爱的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    最主要的操作是 doubleTap 和pinchGesture,这也是花了我最多时间的两个问题

    首先讲一下doubleTap的思想,大家注意观察微信的图片浏览器,doubleTap在执行的时候会得到一个在View的点 CGPoint tapPoint = [doubletap locationInView:doubletap.view];

    然后双击后,放大UIImageView,然后通过设定contentoffset偏移量将 tapPoint 移到屏幕最中间,这是双击的点包含在图片里的情况,另外一种情况,是双击的点在图片外,然后点在图片外又有 左上,右上,左下,右下四种情况,

iOS图片浏览器控件 放大,缩小,UIScrollView

电脑资料

iOS图片浏览器控件 放大,缩小,UIScrollView》(https://www.unjs.com)。分别将图片放大然后,图片左上,右上,左下,右下四个方向贴边显示

    然后根据tapPoint的x,y判断四种不同的情况

   

tapX,tapY是tapPoint的x,y  imgY是图片的y值,imgHeight是图片的Heightif (tapY<imgY) {        //上面        pointType = XJAlbumOutImgViewPointLeftUp;        if (tapX>myScreenWidth/2) {            pointType = XJAlbumOutImgViewPointRightUp;        }        isOutImgView = YES;    }    else if(tapY>imgY+imgHeight)    {        //下面        pointType = XJAlbumOutImgViewPointLeftDown;        if (tapX>myScreenWidth/2) {            pointType = XJAlbumOutImgViewPointRightDown;        }        isOutImgView = YES;    }

最新文章