美文网首页iOSiOS DeveloperIOS知识整理
iOS处理视图缩放手势,限制缩放比例

iOS处理视图缩放手势,限制缩放比例

作者: 会飞的大马猴 | 来源:发表于2017-04-25 18:31 被阅读85次

    开发中遇到个类似脑图的一个东西,里面需要支持缩放,下面介绍一下我是怎么处理的

    需要的类

    UIPinchGestureRecognizer 这个就是缩放的手势

    过程

    1.将视图添加缩放手势
    UIView *customView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    
    UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)]; 
    
    [customView addGestureRecognizer:pinchGestureRecognizer];
    
    

    相应方法

    #define MaxSCale 2.0  //最大缩放比例
    #define MinScale 0.5  //最小缩放比例
    
    @property (nonatomic,assign) CGFloat totalScale; //<? 用于记录视图即时的缩放比例
    
    // 处理缩放手势
    - (void)pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer
    {
        UIView *view = pinchGestureRecognizer.view;
    
        CGFloat scale = pinchGestureRecognizer.scale;
        //放大情况
        if(scale > 1.0){
            if(self.totalScale > MaxSCale) return;
        } 
        //缩小情况
        if (scale < 1.0) {
            if (self.totalScale < MinScale) return;
        }
        
        if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {
            view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);
            pinchGestureRecognizer.scale = 1;
            self.totalScale *=scale;
    
        }
    }
    

    总结

    最开始,并没有想好怎么限制,后来参考别人的办法,就是在处理手势的时候 适当的时候return。
    值得注意的是self.totalScale一定要初始化为 1;

    相关文章

      网友评论

        本文标题:iOS处理视图缩放手势,限制缩放比例

        本文链接:https://www.haomeiwen.com/subject/tfovzttx.html