iOS基礎(chǔ)-基礎(chǔ)手勢(shì)總結(jié)--(UIGestureRecognizer)

等是有家歸不得,杜鵑休向耳邊啼!<水水獺>

UIGestureRecognize手勢(shì)識(shí)別器的使用簡(jiǎn)介

  • 手勢(shì)識(shí)別器是一個(gè)抽象類, 特殊的觸摸事件. 我們不使用它本身,而是使用它的子類

類型 | 類 名|
:-----:||:------|
平移 | UIPanGestureRecognizer
輕掃(滑動(dòng)) | UISwipeGestureRecognizer
長(zhǎng)按 | UILongPressGestureRecognizer
捏合 | UIPinchGestureRecognizer
旋轉(zhuǎn) | UIRotationGestureRecognizer
輕拍 | UITapGestureRecognizer


下面結(jié)合代碼一一解讀:

  • 首先如果你想實(shí)現(xiàn)同時(shí)觸發(fā)手勢(shì)(捏合旋轉(zhuǎn)等)的作用,需要實(shí)現(xiàn)下面的協(xié)議<UIGestureRecognizerDelegate>方法(其他方法可以進(jìn)去看下)
# Simultaneously : 同時(shí)識(shí)別手勢(shì)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}```


-------------
這里我都把手勢(shì)都添加到自定義的一個(gè) UImageView 上面
--------------
--------
####輕拍手勢(shì):
- 第一步:創(chuàng)建并添加
```code
UITapGestureRecognizer *tap = [UITapGestureRecognizer new];
// 手勢(shì)添加手勢(shì)事件   
 [tap addTarget:self action:@selector(tapView:)];
# 關(guān)鍵屬性: 設(shè)置輕拍的次數(shù):
tap.numberOfTapsRequired = 1;
 // 將輕拍的手勢(shì)添加到 UIimageView 上
 [self.imageView  addGestureRecognizer:tap];
  • 第二步: 實(shí)現(xiàn)手勢(shì)事件
-(void)tapView:(UITapGestureRecognizer *)tap
{
    NSLog(@"我被輕輕的拍了~~~我要換圖片了~~~~");
    self.imgeView.image = [UIImage imageNamed:@"2.jpg"];
}

長(zhǎng)按手勢(shì):

  • 第一步: 創(chuàng)建并添加到 ImageView 上
UILongPressGestureRecognizer *longPress = [UILongPressGestureRecognizer new];
  [longPress addTarget:self action:@selector(longPress)]:
 # 關(guān)鍵屬性: 至少按0.5秒才會(huì)有反應(yīng)
 longPress.minimumPressDuration = 0.5;
[self.imageView addGestureRecognizer:longPress];```
- 第二步: 實(shí)現(xiàn)長(zhǎng)按手勢(shì)事件
```code
-(void)longPress
{
    NSLog(@"你在長(zhǎng)按著我~~我的背景要變色");
    self.imageView.backgroundColor = [UIColor redColor];
}```
----------
####平移手勢(shì):
- 第一步: 創(chuàng)建并添加
```code
UIPanGestureRecognizer *pan = [UIPanGestureRecognizer new];
 [pan addTarget:self action:@selector(panView:)];
    //將手勢(shì)添加到圖片上
[self.imageView addGestureRecognizer:pan];```
第二步: 實(shí)現(xiàn)平移事件: 這里我們讓照片跟著手指的平移一起移動(dòng)
```code
-(void)panView:(UIPanGestureRecognizer *)pan
{
#這里有個(gè)區(qū)別 
#1 locationInView:獲取到的是手指點(diǎn)擊屏幕實(shí)時(shí)的坐標(biāo)點(diǎn)馒稍;
#2 translationInView:獲取到的是手指移動(dòng)后,在相對(duì)坐標(biāo)中的偏移量
     //在pan.view上移動(dòng)的距離
    CGPoint translation = [pan translationInView:pan.view];
    //獲取View的中心點(diǎn)
    CGPoint center = pan.view.center;
    //中心點(diǎn)的x值+挪動(dòng)距離的x值
    center.x = center.x + translation.x;
    //中心點(diǎn)的y值+挪動(dòng)距離的y值
    center.y = center.y+translation.y;
    pan.view.center = center;
    //清空移動(dòng)距離
    [pan setTranslation:CGPointZero inView:pan.view];
}```
效果展示:
![平移手勢(shì)效果圖](http://upload-images.jianshu.io/upload_images/1523603-92daddc8089597aa.gif?imageMogr2/auto-orient/strip)
------------------
####旋轉(zhuǎn)手勢(shì):
- 第一步: 創(chuàng)建并添加
```code
UIRotationGestureRecognizer *ritation = [UIRotationGestureRecognizer new];
 
 [ritation addTarget:self action:@selector(ritationView:)];
    //將手勢(shì)放到圖片上
 [self.imageView addGestureRecognizer:ritation];
  • 第二步: 實(shí)現(xiàn)旋轉(zhuǎn)事件 這里我們讓照片跟著一起旋轉(zhuǎn)
-(void)ritationView:(UIRotationGestureRecognizer *)rotation
{
# 這是一個(gè)二維坐標(biāo)轉(zhuǎn)換的結(jié)構(gòu)體數(shù)據(jù)
    /*
    struct CGAffineTransform {
        CGFloat a, b, c, d;
        CGFloat tx, ty;
    };
     其中a,d表示放大縮小有關(guān)
     b,c表示的是選擇角度有關(guān)
     tx,ty是和平移有關(guān)*/
# 這句意思是 手勢(shì)所在視圖的轉(zhuǎn)化形式是
    rotation.view.transform =  CGAffineTransformRotate(rotation.view.transform, rotation.rotation);
#  每轉(zhuǎn)一次要把角度調(diào)回到0 要不然下次旋轉(zhuǎn)家督實(shí)在上次的基礎(chǔ)之上
rotation.rotation = 0;//rotation:代表的是旋轉(zhuǎn)的弧度
    NSLog(@"旋轉(zhuǎn)~~~轉(zhuǎn)啊轉(zhuǎn)~~~");
}

效果圖:


旋轉(zhuǎn)事件效果示意

  • 第一步: 創(chuàng)建并添加

    UIPinchGestureRecognizer *pinch = [UIPinchGestureRecognizer new];
    [pinch addTarget:self action:@selector(pinchView:)];
    
//將手勢(shì)添加到圖片之上
    [self.imageView addGestureRecognizer:pinch];

第二步: 實(shí)現(xiàn)捏合事件 這里我們讓圖片隨著捏合縮放

-(void)pinchView:(UIPinchGestureRecognizer *)pinch
{
    NSLog(@"捏合,捏一捏~~~ 我正在被捏~~~");
    pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale);
    //scale  相對(duì)于屏幕來(lái)說(shuō)的坐標(biāo)點(diǎn)
    pinch.scale = 1;
}```
效果示意圖:

![捏合縮放圖片示意圖](http://upload-images.jianshu.io/upload_images/1523603-d1eec01acbd6d12c.gif?imageMogr2/auto-orient/strip)
-------------------
####清掃(滑動(dòng))手勢(shì):
- 第一步: 創(chuàng)建并添加
```code
UISwipeGestureRecognizer *left = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftAction:)]; 
# 注意重要屬性: 這個(gè)手勢(shì) 默認(rèn)屬性direction(方向)只有向右滑動(dòng) 所以要為左滑動(dòng)更改下屬性 向右是默認(rèn) 可以不改
left.direction = UISwipeGestureRecognizerDirectionLeft; 
[self.imageView addGestureRecognizer:left];```

- 第二步: 實(shí)現(xiàn)事件

```code
- (void)leftAction:(UISwipeGestureRecognizer *)sender
{ 
     NSLog(@"向右滑動(dòng)了");
}```
[結(jié)合動(dòng)畫動(dòng)畫清掃(滑動(dòng))手勢(shì)實(shí)例:](http://www.reibang.com/p/a730199dd12b)

![輕掃滑動(dòng)結(jié)合動(dòng)畫實(shí)現(xiàn)效果演示](http://upload-images.jianshu.io/upload_images/1523603-96990bce6122f773.gif?imageMogr2/auto-orient/strip)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子峡继,更是在濱河造成了極大的恐慌收叶,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堪澎,死亡現(xiàn)場(chǎng)離奇詭異柜裸,居然都是意外死亡缕陕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門疙挺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扛邑,“玉大人,你說(shuō)我怎么就攤上這事铐然∈弑溃” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵搀暑,是天一觀的道長(zhǎng)沥阳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)自点,這世上最難降的妖魔是什么桐罕? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上功炮,老公的妹妹穿的比我還像新娘溅潜。我一直安慰自己,他們只是感情好薪伏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布滚澜。 她就那樣靜靜地躺著,像睡著了一般嫁怀。 火紅的嫁衣襯著肌膚如雪设捐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天塘淑,我揣著相機(jī)與錄音萝招,去河邊找鬼。 笑死朴爬,一個(gè)胖子當(dāng)著我的面吹牛即寒,可吹牛的內(nèi)容都是我干的橡淆。 我是一名探鬼主播召噩,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逸爵!你這毒婦竟也來(lái)了具滴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤师倔,失蹤者是張志新(化名)和其女友劉穎构韵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趋艘,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疲恢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓷胧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片显拳。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搓萧,靈堂內(nèi)的尸體忽然破棺而出杂数,到底是詐尸還是另有隱情,我是刑警寧澤瘸洛,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布揍移,位于F島的核電站,受9級(jí)特大地震影響反肋,放射性物質(zhì)發(fā)生泄漏那伐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罕邀。 院中可真熱鬧读规,春花似錦、人聲如沸燃少。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)阵具。三九已至碍遍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阳液,已是汗流浹背怕敬。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帘皿,地道東北人东跪。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鹰溜,于是被迫代替她去往敵國(guó)和親虽填。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容