zoukankan      html  css  js  c++  java
  • 制作图集.放大缩小效果

    /////继承自 scrollView且遵守 scrollView代理方法

    -(instancetype)initWithFrame:(CGRect)frame

    {

        if (self = [super initWithFrame:frame]) {

            

            self.bounces = NO;

            self.imgV = [[SDBrowserImageView alloc]init];

            self.imgV.width = SCREEN_WIDTH;

            self.imgV.height = SCREEN_WIDTH;

            self.imgV.center = CGPointMake(SCREEN_WIDTH * 0.5, SCREEN_HEIGHT *0.5 );

            

            [self addSubview:self.imgV];

            

    //        // 设置imageView允许用户交互,支持多点触碰

    //        self.imgV.userInteractionEnabled = YES;

             self.userInteractionEnabled = YES;

    //        self.imgV.multipleTouchEnabled = YES;

    //        

            self.imgV.contentMode = UIViewContentModeScaleAspectFit;

            

            

            //2.设置放大缩小的倍数

            self.maximumZoomScale = 2.0;

            self.minimumZoomScale = 1.0;

            

            //3.设置协议方法

            self.delegate = self;

            

            //4.设置双击手势

            UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap2:)];

            //设置点击的次数

            tap2.numberOfTapsRequired = 2;

            //设置触摸手指的个数

            tap2.numberOfTouchesRequired = 1;

            

            //将手势对象添加到需要作用的视图

            [self addGestureRecognizer:tap2];

            

            //5.创建单击手势

            UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap1:)];

            

            [self addGestureRecognizer:tap1];

            

            //当双击手势被触发时,让单击手势无效

            [tap1 requireGestureRecognizerToFail:tap2];

     

        }

        return  self;

        

    }

    - (void)tap2:(UITapGestureRecognizer *)tap {

        

        //    NSLog(@"双击了");

        //    NSLog(@"%@",tap.view);

        

        

        //    self.zoomScale; //子视图放大的倍数

        

        if (self.zoomScale > 1) {  //放大状态

            

            //使用这个方法实现对子视图缩放

            [self setZoomScale:1 animated:YES];

            

        } else {   //缩小状态

            [self setZoomScale:2 animated:YES];

        }

        

    }

    //单击图片事件

    - (void)tap1:(UITapGestureRecognizer *)tap {

        

        //    NSLog(@"单击了");

        

        //发送通知

        [YRNotification postNotificationName:@"tapNoti" object:self];

        

    }

    #pragma mark - UIScrollViewDelegate

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {

        

        return _imgV;

    }

    - (void)scrollViewDidZoom:(UIScrollView *)aScrollView

    {

        CGFloat offsetX = (self.bounds.size.width > self.contentSize.width)?

        (self.bounds.size.width - self.contentSize.width) * 0.5 : 0.0;

        CGFloat offsetY = (self.bounds.size.height > self.contentSize.height)?

        (self.bounds.size.height - self.contentSize.height) * 0.5 : 0.0;

        _imgV.center = CGPointMake(self.contentSize.width * 0.5 + offsetX,

                                     self.contentSize.height * 0.5 + offsetY);

     }

    // 清除缩放

    - (void)eliminateScale

    {

        self.contentSize = CGSizeMake(0, 0);

        self.imgV.center = CGPointMake(SCREEN_WIDTH * 0.5, SCREEN_HEIGHT *0.5);

        CGAffineTransform trans = CGAffineTransformMake(1, 0, 0, 1, 1.0, 1.0);

        self.imgV.transform = trans;

        

    }

    厚积薄发
  • 相关阅读:
    iOS系统中XML&JSON解析的代码实现
    ViewController之间如何传值
    如何归档自定义对象的数组
    一个小问题
    阶段性总结
    c语言以二进制的方式向文件读写一组数据
    C语言复杂声明,指针的复杂用法
    C语言中的getchar和putchar
    C语言结构体
    常量指针 和 指针常量
  • 原文地址:https://www.cnblogs.com/yr434/p/4953616.html
Copyright © 2011-2022 走看看