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];
}