zoukankan      html  css  js  c++  java
  • iOS

    前言

    	NS_CLASS_AVAILABLE_IOS(3_2)  @interface UIGestureRecognizer : NSObject
    	@available(iOS 3.2, *)		 public class UIGestureRecognizer : NSObject
    
    	// 点击(轻点)
    	NS_CLASS_AVAILABLE_IOS(3_2)  @interface UITapGestureRecognizer : UIGestureRecognizer
    	@available(iOS 3.2, *)		 public class UITapGestureRecognizer : UIGestureRecognizer
    
    	// 长按(按住不放)
    	NS_CLASS_AVAILABLE_IOS(3_2)  @interface UILongPressGestureRecognizer : UIGestureRecognizer
    	@available(iOS 3.2, *)		 public class UILongPressGestureRecognizer : UIGestureRecognizer
    
    	// 旋转(两个手指进行旋转)
    	NS_CLASS_AVAILABLE_IOS(3_2)  @interface UIRotationGestureRecognizer : UIGestureRecognizer
    	@available(iOS 3.2, *)      public class UIRotationGestureRecognizer : UIGestureRecognizer
    
    	// 捏合(两个手指,缩放手势)
    	NS_CLASS_AVAILABLE_IOS(3_2)  @interface UIPinchGestureRecognizer : UIGestureRecognizer
    	@available(iOS 3.2, *)      public class UIPinchGestureRecognizer : UIGestureRecognizer
    
    	// 拖动(移动速度较慢)
    	NS_CLASS_AVAILABLE_IOS(3_2)  @interface UIPanGestureRecognizer : UIGestureRecognizer
    	@available(iOS 3.2, *)		 public class UIPanGestureRecognizer : UIGestureRecognizer
    
    	// 滑动(快速移动)
    	NS_CLASS_AVAILABLE_IOS(3_2)  @interface UISwipeGestureRecognizer : UIGestureRecognizer 
    	@available(iOS 3.2, *)		 public class UISwipeGestureRecognizer : UIGestureRecognizer
    

    1、tapGesture 点击手势

    1.1 tapGesture 的创建

    • Objective-C

      	// 实例化点击手势对象
       	UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self 
       	                                                                             action:@selector(tapClick:)];
          
      	// 向 imageView 添加点击手势
       	[imageView addGestureRecognizer:tapGesture];
      
    • Swift

      	// 实例化点击手势对象
      	let tapGesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, 
      	                                                               action: #selector(UiGestureRecognizer.tapClick(_:)))   
      
      	// 向 imageView 添加点击手势
      	imageView?.addGestureRecognizer(tapGesture)
      

    1.2 tapGesture 的设置

    • Objective-C

      	// 设置点击次数
      	/*
      		默认为 1:单击,为 2 时为双击
      	*/
      	singleTapGesture.numberOfTapsRequired = 1;
      
      	// 设置触摸点数
      	/*
      		默认为 1,单个手指触摸
      	*/
      	singleTapGesture.numberOfTouchesRequired = 1;
      
      	// 单双击共存
      	/*
      		设置单击手势与双击手势共存,当没有检测到双击手势或检测双击手势失败时单击手势才有效
      	*/
      	[singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];
      
      	// 获取点击的视图
      	/*
      		剪取点击的视图,附带点击手势一起剪取
      	*/
      	UIView *tapView = tapGesture.view;
      
      	// 获取点击的图片
      	/*
      		复制点击的图片,附带点击手势一起复制
      	*/
      	UIImage *tapImage = ((UIImageView *)tapGesture.view).image;
      
    • Swift

      	// 设置点击次数
      	/*
      		默认为 1:单击,为 2 时为双击
      	*/
      	singleTapGesture.numberOfTapsRequired = 1
          
      	// 设置触摸点数
      	/*
      		默认为 1,单个手指触摸
      	*/
      	singleTapGesture.numberOfTouchesRequired = 1
          
      	// 单双击共存
      	/*
      		设置单击手势与双击手势共存,当没有检测到双击手势或检测双击手势失败时单击手势才有效
      	*/
      	singleTapGesture.requireGestureRecognizerToFail(doubleTapGesture)
          
      	// 获取点击的视图
      	/*
      		剪取点击的视图,附带点击手势一起剪取
      	*/
      	let tapView:UIView = tapGesture.view!
          
      	// 获取点击的图片
      	/*
      		复制点击的图片,附带点击手势一起复制
      	*/
      	let tapImage:UIImage = (tapGesture.view! as! UIImageView).image!
      

    1.3 自定义触摸响应事件处理

    • Objective-C

      	- (void)tapClick:(UITapGestureRecognizer *)tapGesture {
      
      	}
      
    • Swift

      	func tapClick(tapGesture:UITapGestureRecognizer) {
      
      	}
      

    2、longPressGesture 长按手势

    2.1 longPressGesture 的创建

    • Objective-C

      	// 实例化长按手势对象
      	UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self 
      	                                                                                               action:@selector(longPressClick:)];
      
      	// 向 imageView 添加长按手势
      	[imageView addGestureRecognizer:longPressGesture];
      
    • Swift

      	// 实例化长按手势对象
      	let longPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, 
      	                                                                                 action: #selector(UiGestureRecognizer.longPressClick(_:)))
      
      	// 向 imageView 添加长按手势
      	imageView?.addGestureRecognizer(longPressGesture)
      

    2.2 longPressGesture 的设置

    • Objective-C

      	// 获取手势状态
      	UIGestureRecognizerState state = longPressGesture.state;
      
      	// 长按手势开始
      	if (longPressGesture.state == UIGestureRecognizerStateBegan) {
          	
      	}
      
      	// 长按手势触发结束
      	if (longPressGesture.state == UIGestureRecognizerStateEnded) {
          	
      	}
      
    • Swift

      	// 获取手势状态
      	let state:UIGestureRecognizerState = longPressGesture.state
        	
      	// 长按手势开始
      	if longPressGesture.state == UIGestureRecognizerState.Began {
              	
      	}
          
      	// 长按手势触发结束
      	if longPressGesture.state == UIGestureRecognizerState.Ended {
              	
      	}
      

    2.3 自定义触摸响应事件处理

    • Objective-C

      	- (void)longPressClick:(UILongPressGestureRecognizer *)longPressGesture {
      	
      	}
      
    • Swift

      	func longPressClick(longPressGesture:UILongPressGestureRecognizer) {
      	
      	}
      

    3、rotationGesture 旋转手势

    3.1 rotationGesture 的创建

    • Objective-C

      	// 实例化旋转手势对象
      	UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self 
      	                                                                                            action:@selector(rotationClick:)];
      	
      	// 向 imageView 添加旋转手势
      	[imageView addGestureRecognizer:rotationGesture];
      
    • Swift

      	// 实例化旋转手势对象
      	let rotationGesture:UIRotationGestureRecognizer = UIRotationGestureRecognizer(target: self, 
      	                                                                              action: #selector(UiGestureRecognizer.rotationClick(_:)))
      	
      	// 向 imageView 添加旋转手势
      	imageView?.addGestureRecognizer(rotationGesture)
      

    3.2 rotationGesture 的设置

    • Objective-C

      	// 获取旋转角度
      	/*
      		rotation 获取到的为弧度,1 度 = PI/180 弧度
      	*/
      	CGFloat rotation = rotationGesture.rotation  * 180 * M_1_PI;
      
      	// 图片旋转
      	/*
      		lastRotation 为之前的角度
      	*/
      	imageView.transform = CGAffineTransformMakeRotation(lastRotation + rotationGesture.rotation);
      
      	// 旋转手势触发结束
      	if (rotationGesture.state == UIGestureRecognizerStateEnded) {
          	
      		lastRotation += rotationGesture.rotation;
      	}
      
    • Swift

      	// 获取旋转角度
      	/*
      		rotation 获取到的为弧度,1 度 = PI/180 弧度
      	*/
      	let rotation:CGFloat = rotationGesture.rotation  * 180 * CGFloat(M_1_PI)
        	 
      	// 图片旋转
      	/*
      		lastRotation 为之前的角度
      	*/
      	imageView?.transform = CGAffineTransformMakeRotation(lastRotation + rotationGesture.rotation)
          
      	// 旋转手势触发结束
      	if rotationGesture.state == UIGestureRecognizerState.Ended {
              	
      		lastRotation += rotationGesture.rotation
      	}
      

    3.3 自定义触摸响应事件处理

    • Objective-C

      	// 用模拟器时需按住 option 键
      	- (void)rotationClick:(UIRotationGestureRecognizer *)rotationGesture {
      	
      	}
      
    • Swift

      	// 用模拟器时需按住 option 键
      	func rotationClick(rotationGesture:UIRotationGestureRecognizer) {
      
      	}
      

    4、pinchGesture 捏合手势

    4.1 pinchGesture 的创建

    • Objective-C

      	// 实例化捏合手势对象
      	UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self 
      	                                                                                   action:@selector(pinchClick:)];
      	
      	// 向 imageView 添加捏合手势
      	[imageView addGestureRecognizer:pinchGesture];
      
    • Swift

      	// 实例化捏合手势对象
      	let pinchGesture:UIPinchGestureRecognizer = UIPinchGestureRecognizer(target: self, 
      	                                                                     action: #selector(UiGestureRecognizer.pinchClick(_:)))
      
      	// 向 imageView 添加捏合手势
      	imageView?.addGestureRecognizer(pinchGesture)
      

    4.2 pinchGesture 的设置

    • Objective-C

      	// 获取缩放倍数
      	CGFloat scale = pinchGesture.scale;
      
      	// 图片缩放
      	imageView.transform = CGAffineTransformMakeScale(pinchGesture.scale, pinchGesture.scale);
      	imageView.bounds = CGRectMake(0, 0, imageView.bounds.size.width * pinchGesture.scale, 
      	                                    imageView.bounds.size.height * pinchGesture.scale);
      
      	// 还原缩放倍数
      	[pinchGesture setScale:1];
      
    • Swift

      	// 获取缩放倍数
      	let scale:CGFloat = pinchGesture.scale
         	
      	// 图片缩放
      	imageView?.transform = CGAffineTransformMakeScale(pinchGesture.scale, pinchGesture.scale)
      	imageView?.bounds = CGRectMake(0, 0, imageView!.bounds.size.width * pinchGesture.scale, 
      	                                     imageView!.bounds.size.height * pinchGesture.scale)
          
      	// 还原缩放倍数
      	pinchGesture.scale = 1
      

    4.3 自定义触摸响应事件处理

    • Objective-C

      	// 用模拟器时需按住 option 键
      	- (void)pinchClick:(UIPinchGestureRecognizer *)pinchGesture {
      	
      	}
      
    • Swift

      	// 用模拟器时需按住 option 键
      	func pinchClick(pinchGesture:UIPinchGestureRecognizer) {
      
      	}
      

    5、panGesture 拖动手势

    5.1 panGesture 的创建

    • Objective-C

      	// 实例化拖拽手势对象
      	UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self 
      	                                                                             action:@selector(panClick:)];
      
      	// 向 imageView 添加拖拽手势
      	[imageView addGestureRecognizer:panGesture];
      
    • Swift

      	// 实例化拖拽手势对象
      	let panGesture:UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, 
      	                                                               action: #selector(UiGestureRecognizer.panClick(_:)))
      
      	// 向 imageView 添加拖拽手势
      	imageView?.addGestureRecognizer(panGesture)
      

    5.2 panGesture 的设置

    • Objective-C

      	// 获取手势位置
      	CGPoint currentPoint = [panGesture locationInView:self.view];
      
      	// 图片移动
      	imageView.center = currentPoint;
      
    • Swift

      	// 获取手势位置
      	let currentPoint:CGPoint = panGesture.locationInView(self.view)
        	
      	// 图片移动
      	imageView?.center = currentPoint
      

    5.3 自定义触摸响应事件处理

    • Objective-C

      	- (void)panClick:(UIPanGestureRecognizer *)panGesture {
      	
      	}
      
    • Swift

      	func panClick(panGesture:UIPanGestureRecognizer) {
      
      	}
      

    6、swipeGesture 滑动手势

    6.1 swipeGesture 的创建

    • Objective-C

      	// 实例化滑动手势对象
      	UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self 
      	                                                                                   action:@selector(swipeClick:)];
      
      	// 设置滑动方向,默认为 0:向右滑动
      	swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight;
      
      	// 向 imageView 添加拖拽手势
      	[imageView addGestureRecognizer:swipeGesture];
      
    • Swift

      	// 实例化滑动手势对象
      	let swipeGesture:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, 
      	                                                                     action: #selector(UiGestureRecognizer.swipeClick(_:)))
      
      	// 设置滑动方向,默认为 0:向右滑动
      	swipeGesture.direction = [.Left, .Right]
      	
      	// 向 imageView 添加拖拽手势
      	imageView?.addGestureRecognizer(swipeGesture)
      

    6.2 swipeGesture 的设置

    • Objective-C

      	// 获取滑动方向
      	UISwipeGestureRecognizerDirection direction = swipeGesture.direction;
      
    • Swift

      	// 获取滑动方向
      	let direction:UISwipeGestureRecognizerDirection = swipeGesture.direction
      

    6.3 自定义触摸响应事件处理

    • Objective-C

      	- (void)swipeClick:(UISwipeGestureRecognizer *)swipeGesture {
      	
      	}
      
    • Swift

      	func swipeClick(swipeGesture:UISwipeGestureRecognizer) {
      
      	}
      
  • 相关阅读:
    将IIS中网站日志批量导入到mysql【python】
    Python网站日志分析
    python 获取文件版本号和修改时间
    python将IIS日志导入到SQL
    python2.7 MySQLdb模块在win32下安装
    《python核心编程》课后题第二版第十五章463页
    python批量文件重命名
    python随机生成彩票号码
    python获取IP归属地
    百度收录批量查询【python版】
  • 原文地址:https://www.cnblogs.com/QianChia/p/5759089.html
Copyright © 2011-2022 走看看