编辑图片的时候通常需要设置图片的大小
http://stackoverflow.com/a/5446348/2177332
- (void)pinchGestureDetected:(UIPinchGestureRecognizer *)recognizer{
UIGestureRecognizerState state = [recognizer state];
if(state == UIGestureRecognizerStateBegan) {
// Reset the last scale, necessary if there are multiple objects with different scales
//获取最后的比例
_lastScale = [recognizer scale];
}
if (state == UIGestureRecognizerStateBegan ||
state == UIGestureRecognizerStateChanged) {
//获取当前的比例
CGFloat currentScale = [[[recognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];
// Constants to adjust the max/min values of zoom
//设置最大最小的比例
const CGFloat kMaxScale = 3.0;
const CGFloat kMinScale = 1.0;
//设置
//假设上次比例是1 这次比例是4 这是放大
//newScale = 4
//最小 min(4,3/4) 就是3/4
//最大 max(3/4,1/4) 就是3/4 4*3/4 = 3
//假设上次比例是3 这次比例是1/2 这是缩小
//newScale = -3/2
//最小 min(-3/2,3/1/2) = 就是-3/2
//最大 max(-3/2,1/1/2) = 就是2 1/2*2 = 1
//获取上次比例减去想去得到的比例
CGFloat newScale = 1 - (_lastScale - [recognizer scale]);
newScale = MIN(newScale, kMaxScale / currentScale);
newScale = MAX(newScale, kMinScale / currentScale);
CGAffineTransform transform = CGAffineTransformScale([[recognizer view] transform], newScale, newScale);
[recognizer view].transform = transform;
// Store the previous scale factor for the next pinch gesture call
//获取最后比例 下次再用
_lastScale = [recognizer scale];
}
}