IOS(七种手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)详解及实例代码)
大家好,综合小编来为大家讲解下IOS,七种手势操作,拖动、捏合、旋转、点按、长按、轻扫、自定义详解及实例代码这个很多人还不知道,现在让我们一起来看看吧!
今天我要给大家介绍的是IOS的七种手势。手势在开发中经常用到,我们就简单易懂一点,不多说,只看代码:
1、UIGestureRecognizer介绍
[资料图]
手势识别在iOS中非常重要,大大提高了移动设备的便利性。
3.2以后,iOS系统提供了一些常用的手势(UIGestureRecognizer的一个子类),开发者可以直接使用这些手势进行手势操作。
UIPanGestureRecognizer(拖动)UIPinchGestureRecognizer(捏合)UIRotationGestureRecognizer(旋转)UITapGestureRecognizer(点按)UILongPressGestureRecognizer(长按)UISwipeGestureRecognizer(轻扫)另外,
PS:自定义手势时需要# importuikit/uigesturecognizersublic . h,一般需要实现以下方法:
-(无效)复位;-(void)触摸开始:(ns set *)触摸事件:(ui event *)事件;-(void)touches moved:(ns set *)touches with event:(ui event *)事件;-(void)touchesEnded:(ns set *)touches with event:(ui event *)事件;-(void)触摸取消:(ns set *)触摸withEvent:(ui event *)事件;//以上方法在分类UIGestureRecognizer(UIGestureRecognizerProtected)中声明,
2.手势状态
在六种手势识别中,只有一种手势是离散手势,它就是UITapGestureRecognizer。
离散手势的特点是:一旦识别就不能取消,只会调用一个手势操作事件(初始化手势时指定的回调方法)。
换句话说,其他五种手势都是连续手势,连续手势的特点是:手势操作事件会被多次调用,连续手势识别后可以取消手势。从下图可以看出,它们调用操作事件的次数是不同的:
手势状态列举如下:
typedef NS_ENUM(NSInteger,UIGestureRecognizerState){ uigesturerecognizerstateuble,//尚未识别是何种手势操作(但可能已经触发了触摸事件),
但是,连续手势更复杂。以旋转手势为例。如果两个手指向下点击,什么都不做,此时手势无法识别(因为我们还没有旋转),但触摸开始事件实际上已经被触发,处于状态0;如果此时识别出旋转,
会调用相应的操作事件,状态会变成1(手势开始),但状态1只是一瞬间;然后状态变为2(因为我们的旋转需要持续一段时间),重复调用操作事件(如果事件中打印了状态,则重复打印2);放开你的手指,
此时状态变为3,操作事件被调用一次。
3.使用手势的步骤
使用手势很简单,分为三个步骤:
创建手势识别器对象的实例。创建时,指定一个回调方法,并在手势开始、更改或结束时执行回调方法。设置手势识别器对象实例(可选部分)的相关属性,并将其添加到要识别的视图中。
每个手势只对应一个视图。当屏幕在视图的边界内触摸时,如果手势与预定的相同,将执行回调方法。PS:一个手势只能对应一个视图,但是一个视图可以有多个手势。
建议在真机上测试这些手势,模拟器操作不太方便,可能导致认为手势失效的情况。(模拟器测试捏合和旋转手势时,按住option 键,再用触摸板或鼠标操作)
4、举例说明
功能描述:
附加到两个图片视图UIImageView 的有『拖动』、『捏合』、『旋转』、『点按』;
而『轻扫』和『自定义手势KMGestureRecognizer』附加在根视图UIView 中。
拖动:进行当前图片视图位置移动
捏合:进行当前图片视图缩放
旋转:进行当前图片视图角度旋转
点按:双击恢复当前图片视图的缩放、角度旋转、不透明度
长按:设置当前图片视图的不透明度为0.7
轻扫:左右轻扫设置两个图片视图为居中,同时以垂直居中的特定偏移量定位
自定义手势:挠痒功能,左右扫动共3次或以上,设置两个图片视图为居中,同时以水平居中的特定偏移量定位
效果如下:
KMGestureRecognizer.h
#import UIKit/UIKit.htypedef NS_ENUM(NSUInteger, Direction) { DirectionUnknown, DirectionLeft, DirectionRight};@interface KMGestureRecognizer : UIGestureRecognizer@property (assign, nonatomic) NSUInteger tickleCount; //挠痒次数@property (assign, nonatomic) CGPoint currentTickleStart; //当前挠痒开始坐标位置@property (assign, nonatomic) Direction lastDirection; //最后一次挠痒方向@endKMGestureRecognizer.m
#import 'KMGestureRecognizer.h'#import UIKit/UIGestureRecognizerSubclass.h@implementation KMGestureRecognizer#define kMinTickleSpacing 20.0#define kMaxTickleCount 3- (void)reset { _tickleCount=0; _currentTickleStart=CGPointZero; _lastDirection=DirectionUnknown; if (self.state==UIGestureRecognizerStatePossible) { self.state=UIGestureRecognizerStateFailed; }}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch=[touches anyObject]; _currentTickleStart=[touch locationInView:self.view]; //设置当前挠痒开始坐标位置}- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { //『当前挠痒开始坐标位置』和『移动后坐标位置』进行X 轴值比较,
#import UIKit/UIKit.h#import 'KMGestureRecognizer.h'@interface ViewController : UIViewController@property (strong, nonatomic) UIImageView *imgV;@property (strong, nonatomic) UIImageView *imgV2;@property (strong, nonatomic) KMGestureRecognizer *customGestureRecognizer;@endViewController.m
本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
在安徽淮南购买高尔夫车型时,价格会受到多种因素的影响,包括车辆的配置、市场行情、经销商优惠以及个人谈判...浏览全文>>
-
关于2025款安徽池州揽境的价格,目前还没有官方发布的信息。不过,您可以关注一汽大众的官方网站或当地的经销...浏览全文>>
-
截至2024年,滁州地区大众Polo的2024款车型价格可能会因配置、经销商促销活动以及具体市场需求有所不同。以下...浏览全文>>
-
根据您提供的信息,淮北地区的T-ROC探歌的最低售价为15 89万元起。如果您有意向购买这款车,以下是一些详细的...浏览全文>>
-
根据您提供的信息,安徽亳州的途锐车型目前的最低落地价为55 88万元起。这个价格是厂商指导价或经销商报价的...浏览全文>>
-
根据市场信息,2025款长安启源A05在换代之前可能会推出一些优惠政策或促销活动,以吸引消费者抓住最后的机会购...浏览全文>>
-
根据您提供的信息,2025款安徽淮北揽境的最低售价为 26 19万元起。同时提醒您,优惠活动可能有限时性,建议...浏览全文>>
-
根据您提供的信息,安徽亳州的大众途锐目前有优惠活动,最低售价为 55 88万元起。如果您计划购买途锐,现在...浏览全文>>
-
关于2025款长安启源A05的新车报价信息,目前市场上还没有官方发布的具体价格。不过,如果您正在考虑在换代前购...浏览全文>>
-
根据您提供的信息,安徽淮北地区2025款揽境的最低售价为26 19万元起。不过,请注意这可能是促销或特定配置的...浏览全文>>
- 山东济南探岳X新款价格2024款多少钱?选车指南与落地价全解析
- 济南凌渡多少钱 2025款落地价,最低售价9.59万起,现车充足
- 滁州ID.6 CROZZ落地价,配置升级,值不值得买?
- 淮南大众ID.3多少钱 2025款落地价全分析,买车不踩坑
- 安徽蚌埠ID.6 X 2023新款价格,最低售价19.3888万起,购车攻略来了
- 安徽蚌埠ID.4 CROZZ新车报价2025款,换代前的购车良机,不容错过
- 安徽蚌埠大众CC落地价,各车型售价大公开,性价比爆棚
- 天津滨海宝来价格,各配置车型售价全知晓
- 滁州帕萨特新能源价格大起底,买车超详细
- 天津滨海途观L新能源新车报价2023款,最低售价26.105万起现在该入手吗?
- 淮北T-ROC探歌价格,最低售价15.89万起,购车攻略来了
- 淮南大众ID.3多少钱 2025款落地价全分析,买车不踩坑
- 生活家PHEV 2025新款价格大起底,买车超详细
- 生活家PHEV 2025新款价格大起底,买车超详细
- 生活家PHEV最新价格2025款,价格再创新低,性价比爆棚
- 安徽亳州途昂X多少钱?购车攻略与优惠全在这
- 天津滨海宝来价格,各配置车型售价全知晓
- 安徽安庆揽巡价格全分析,买车不踩坑
- 东莞ID.4 CROZZ新款价格2025款多少钱?选车秘籍与性价比大公开
- 28.5亿美元卖身腾讯音乐,是喜马拉雅最好的归宿
- 蚌埠途铠 2023新款价格大起底,买车超详细
- 天津滨海ID.6 CROZZ多少钱?不同配置性价比分析
- 安徽阜阳探影多少钱?经销商报价及市场优惠情况
- 安徽滁州途昂X多少钱 2025款落地价大揭秘,买车前必看
- 天津滨海探岳X多少钱 2024款落地价,买车前的全方位指南
- 天津滨海ID.6 X新款价格2023款多少钱?购车攻略助你轻松选车
- 济南途安L最新价格2022款,优惠购车,最低售价16.68万起
- 安徽滁州长安猎手K50新车报价2025款,最低售价18.29万起,现车充足
- 广汽传祺传祺向往M8试驾的流程是什么
- 江淮悍途EV预约试驾,畅享豪华驾乘,体验卓越性能