UIPinchGestureRecognizer 放大缩小图片问题

本文探讨了在iOS开发中使用UIPinchGestureRecognizer处理图片放大缩小时遇到的问题。通过设置_scale变量来修正recognizer.scale连续变化导致的过度放大效果。同时,介绍了将图片放入UIScrollView时,为确保手势识别正常工作,需要设置scrollView.canCancelContentTouches和scrollView.delaysContentTouches属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为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的事件

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值