UIPinchGestureRecognizer 放大缩小图片问题

来源:互联网 发布:反应热力学计算软件 编辑:程序博客网 时间:2024/05/16 07:38

为UIPinchGestureRecognizer 添加事件如下事件

-(void)pinch:(UIPinchGestureRecognizer *)recognizer{

    NSLog(@"pinch");

    recognizer.scale=recognizer.scale-_lastScale+1;

    view.transform=view.transform=CGAffineTransformScale(view.transform, recognizer.scale,recognizer.scale);

    _lastScale=recognizer.scale;

}

这个函数之所以加了一个_lastScale 的原因:

当用户捏合图片的时候,recognizer.scale的值不断在变化 比如:1.1    1.2  1.3

那么如果上述函数中只有view.transform=view.transform=CGAffineTransformScale(view.transform, recognizer.scale,recognizer.scale);这一句话是

就会出现如下情况 1.1的时候放大1.1倍 , 1.2的时候放大现在的1.2倍,依次类推,但是实际情况并不是这样的,我们只是想让这个图片在原来的状态下(也就是最初的那张图片,没有任何拉伸),进行1.2 或者1.3倍的拉伸,为了解决这个问题,比如现在recognizer.scale 为1.3 上次的为1.1 ,1.3-1.1=0.2  1.3相对于1.1只是多了0.2 ,而不是要增大1.3倍,这个1.3倍是相对于原来的图片说的,所以0.2+1 

说的有点乱。。。,表达能力不是很好,可是试一下效果

附加问题:


如果是把要拉伸的图片加到UIScrollview上边,那么对该scrollview要

 scrollView.canCancelContentTouches=NO;

    scrollView.delaysContentTouches=NO;

防止只响应UIScrollview的事件