UIGestureRecognizer学习之——UIPinchGestureRecognizer
来源:互联网 发布:网络特产商城行业分析 编辑:程序博客网 时间:2024/05/16 02:12
UIPinchGestureRecognizer是UIGestureRecognizer的子类。
UIPinchGestureRecognizer除了继承UIGestureRecognizer的属性外,还提供如下俩个属性:
scale: //获取捏合的比例velocity: //获取捏合的速度
示例:和前面的UITapGestureRecognizer的例子相似。
- (void)viewDidLoad{ [super viewDidLoad]; self.view.backgroundColor = [UIColor lightGrayColor]; self.gv.layer.borderWidth = 2; self.gv.layer.cornerRadius = 6; // 设置gv控件支持用户交互 self.gv.userInteractionEnabled = YES; // 设置gv控件支持多点触碰 self.gv.multipleTouchEnabled = YES; // 创建手势处理器,指定使用该控制器的handlePinch:方法处理手势 UIPinchGestureRecognizer* gesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)]; // 为gv控件添加手势处理器。 [self.gv addGestureRecognizer:gesture];}// 实现手势处理器的方法,该方法应该声明一个形参。// 当该方法被激发时,手势处理器会作为参数传给该方法的参数。- (void) handlePinch:(UIPinchGestureRecognizer*)gesture{ // 获取用户捏合的速度和比例 CGFloat velocity = gesture.velocity; CGFloat scale = gesture.scale; self.label.text = [NSString stringWithFormat: @"用户捏合的速度为%g、比例为%g" , velocity , scale]; // 指定2秒后清除label的文本 [self.label performSelector:@selector(setText:) withObject:@"" afterDelay:2];}@end
因为捏合手势处理器可以检测到用户手势捏合的比例,解析该捏合比例就即可对图片进行缩放。
@interface FKViewController : UIViewController@property (strong, nonatomic) IBOutlet UIImageView *imageView;@end
@implementation FKViewControllerUIImage* srcImage;CGFloat currentScale;- (void)viewDidLoad{ [super viewDidLoad]; [UIApplication sharedApplication].statusBarHidden = YES; srcImage = [UIImage imageNamed:@"seashore.png"]; // 设置图片直接显示在中间(不进行任何缩放) self.view.contentMode = UIViewContentModeCenter; // 设置imageView初始显示的图片 self.imageView.image = srcImage; // 设置初始的缩放比例 currentScale = 1; // 设置imageView允许用户交互,支持多点触碰 self.imageView.userInteractionEnabled = YES; self.imageView.multipleTouchEnabled = YES; // 创建UIPinchGestureRecognizer手势处理器,该手势处理器激发scaleImage方法 UIPinchGestureRecognizer* gesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scaleImage:)]; // 为imageView添加手势处理器 [self.imageView addGestureRecognizer:gesture];}- (void) scaleImage:(UIPinchGestureRecognizer*)gesture{ CGFloat scale = gesture.scale; // 如果捏合手势刚刚开始 if (gesture.state == UIGestureRecognizerStateBegan) { // 计算当前缩放比 currentScale = self.imageView.image.size.width / srcImage.size.width; } // 根据手势处理的缩放比计算图片缩放后的目标大小 CGSize targetSize = CGSizeMake(srcImage.size.width * scale * currentScale, srcImage.size.height * scale * currentScale); // 对图片进行缩放 self.imageView.image = [srcImage imageByScalingToSize:targetSize];}@end
0 0
- UIGestureRecognizer学习之——UIPinchGestureRecognizer
- iOS学习之——UIGestureRecognizer
- UIGestureRecognizer学习之——UITapGestureRecognizer
- UIGestureRecognizer学习之—— UIRotationGestureRecognizer
- UIGestureRecognizer学习之——UISwipeGestureRecognizer
- UIGestureRecognizer学习之——UIPanGestureRecognizer
- UIGestureRecognizer学习之—— UILongPressGestureRecognizer
- ios知识点 之——手势学习 UIGestureRecognizer
- 手势识别器(UIGestureRecognizer)- UIPinchGestureRecognizer(捏合)
- IOS开发之手势——UIGestureRecognizer
- IOS开发之手势——UIGestureRecognizer
- IOS开发之手势—UIGestureRecognizer 共存
- UIPinchGestureRecognizer
- 手势——UIGestureRecognizer
- iOS——UIGestureRecognizer
- 22.手势识别之UIPinchGestureRecognizer
- IOS开发之手势——UIGestureRecognizer 共存
- IOS开发之手势——UIGestureRecognizer 共存
- android中改变窗体透明度
- java反射の动态代理与静态代理
- Android使用自定义字体
- android 客户端生成随机验证码的实现
- cocoPods安装及使用
- UIGestureRecognizer学习之——UIPinchGestureRecognizer
- iOS Crash文件的解析(一)
- 如何设置一个严格30分钟过期的Session
- style标签下的CSS代码的显示与实时编辑
- apache.commons.lang.StringUtils 字符串Utils
- Android开发中的Context
- 这几款软件程序员应该都遇到过
- 并发编程模型
- 关于在UIViewController中何时调用[super ... any method name]的问题