等比例放大+手势识别


UIPinchGestureRecognizer主要是用来对图片或者对其它view进行缩放的。
- (void)viewdidload{
UIPinchGestureRecognizer *pinchRecognizer = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)] autorelease];
    [pinchRecognizer setDelegate:self];//需要在头文件中引入UIGestureRecognizerDelegate
    [self.pieChartLeft addGestureRecognizer:pinchRecognizer];
}
#pragma mark - UIGestureRecognizerDelegate Methods
- (void)scale:(UIPinchGestureRecognizer *)gestureRecognizer{
    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
        int width = [gestureRecognizer view].frame.size.width;
        if ([gestureRecognizer scale]>1.f&&width<320) {
            [UIView animateWithDuration:1.f animations:^(void){
                                                        [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], 2.0, 2.0); 
                                                        }];
          
        } else if ([gestureRecognizer scale]<1.f&&width>174) {
            [UIView animateWithDuration:1.f animations:^(void){
                                                        [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], 0.5, 0.5);
            }];
        }
        [gestureRecognizer setScale:1];
    }
}
其中这个scale我是写死的,因为我的需求是手指捏合的时候回到原始大小,放大的时候全屏大小,如果想随着手指的分开和捏合来不断改变的话,借用官方的文档的写法,应该是:
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
        [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
        [gestureRecognizer setScale:1];
    }
这个1相当于原始大小,如果[gestureRecognizer scale]的值小于1表示两手指间的距离在不断地缩小,大于1表示两手指间的距离不断地变大,
另外需要说明的是我写死的这个scale,它是指的是,当前的视图的大小和你想要变化之后视图的大小的比例

转载于:https://my.oschina.net/GfXFJnifklm/blog/174289

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值