图片浏览时的拖拽、放大、缩小旋转手势详解

Pinch 捏合手势控制放大缩小倍率和速率

- (void)pinchImage:(UIGestureRecognizer*)sender {
    
    CGAffineTransform tranform = sender.view.transform;
    CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]) * 0.5;
    
    //当手指离开屏幕时,将lastscale设置为1.0
    if (sender.state == UIGestureRecognizerStateEnded) {
        
        //如果视图宽度小于屏幕尺寸则恢复原始transform
        if (sender.view.frame.size.width <= SCREEN_WIDTH) {
            sender.view.transform = sourceTransform;
        }
        
        lastScale = 1.0;
        return;
    }
    
    if (sender.state == UIGestureRecognizerStateChanged) {
        //最大放大2倍,细小缩放一倍
        NSInteger maxSale = 4;
        if (sender.view.frame.size.width >= SCREEN_WIDTH * maxSale) {
            sender.view.transform = CGAffineTransformScale(sourceTransform, maxSale, maxSale);
            return;
        }else if (sender.view.frame.size.width <= SCREEN_WIDTH * 0.5) {
            sender.view.transform = CGAffineTransformScale(sourceTransform, 0.5, 0.5);
            return;
        }
    }
    
    sender.view.transform = CGAffineTransformScale(tranform,scale, scale);
    lastScale = [(UIPinchGestureRecognizer*)sender scale];
}

你可能感兴趣的:(图片浏览时的拖拽、放大、缩小旋转手势详解)