亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS中各種手勢操作實例代碼

2020-07-26 02:52:39
字體:
來源:轉載
供稿:網友

先看下效果

手勢相關的介紹

IOS中手勢操作一般是 UIGestureRecognizer 類的幾個手勢子類去實現,一般我們用到的手勢就這么5種:

1、點擊  UITapGestureRecognizer

2、平移  UIPanGestureRecognizer

3、縮放  UIPinchGestureRecognizer

4、旋轉  UIRotationGestureRecognizer

5、輕掃  UISwipeGestureRecognizer

我們上面這個實例中就用到了上面這5種手勢,不過其中 點擊與輕掃沒有體現出來,只是輸出了下日志而已,一會看代碼

下面我們來分別介紹下這幾種手勢

1、UITapGestureRecognizer 點擊手勢

UITapGestureRecognizer* tapGes = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGes:)];// 點擊次數,默認為1,1為單擊,2為雙擊tapGes.numberOfTapsRequired = 2;

這個點擊手勢類有一個屬性 numberOfTapsRequired 用于設置點擊數,就是點擊幾次才觸發這個事件

2、UIPanGestureRecognizer 平移手勢

// 平移手勢- (void)initPanGes{ UIPanGestureRecognizer* panGes = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGes:)]; [self.imgView addGestureRecognizer:panGes];}- (void)panGes:(UIPanGestureRecognizer*)ges{ // 獲取平移的坐標點 CGPoint transPoint = [ges translationInView:self.imgView];}

平移手勢本身沒太多可設置的屬性,在平移事件觸發手,可以用  translationInView 方法獲取當前平移坐標點

3、UIPinchGestureRecognizer 縮放手勢

// 縮放手勢- (void)initPinGes{ UIPinchGestureRecognizer* pinGes = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinGes:)]; [self.imgView addGestureRecognizer:pinGes];}- (void)pinGes:(UIPinchGestureRecognizer*)ges{ // 縮放 self.imgView.transform = CGAffineTransformScale(self.imgView.transform, ges.scale, ges.scale);}

縮放手勢在事件里面可以獲取 scale 屬性,表示當前縮放值

4、UIRotationGestureRecognizer 旋轉手勢

// 旋轉手勢- (void)initRotation{ UIRotationGestureRecognizer* rotationGes = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationGes:)]; [self.imgView addGestureRecognizer:rotationGes];}- (void)rotationGes:(UIRotationGestureRecognizer*)ges{ // 旋轉圖片 self.imgView.transform = CGAffineTransformRotate(self.imgView.transform, ges.rotation);}

旋轉手勢在事件里面可以通過獲取 rotation 屬性獲取當前旋轉的角度

5、UISwipeGestureRecognizer 輕掃手勢

// 輕掃手勢- (void)initSwipeGes{ // 創建 從右向左 輕掃的手勢 UISwipeGestureRecognizer* swipeLeftGes = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGes:)]; // 方向,默認是從左往右 // 最多只能開啟一個手勢,如果要開啟多個就得創建多個手勢 // 監聽從右向左的方向 swipeLeftGes.direction = UISwipeGestureRecognizerDirectionLeft; [self.imgView addGestureRecognizer:swipeLeftGes];}- (void)swipeGes:(UISwipeGestureRecognizer*)ges{ // ges.direction方向值 NSLog(@"%s diection:%lu",__func__,(unsigned long)ges.direction);}

輕掃手勢對象需要設置 direction 屬性,默認是只監聽從左向右,這是一個枚舉值 UISwipeGestureRecognizerDirection

UISwipeGestureRecognizerDirectionRight  從左向右(默認值)UISwipeGestureRecognizerDirectionLeft   從右向左UISwipeGestureRecognizerDirectionUp    從下向上UISwipeGestureRecognizerDirectionDown  從上向下

下面看一下我們上面那個效果圖實現代碼吧

//// ViewController.m// 各種手勢操作//// Created by xgao on 16/3/24.// Copyright © 2016年 xgao. All rights reserved.//#import "ViewController.h"@interface ViewController ()<UIGestureRecognizerDelegate>@property (weak, nonatomic) IBOutlet UIImageView *imgView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; [self initTapGes]; [self initPanGes]; [self initPinGes]; [self initRotation]; [self initSwipeGes];}// 點擊手勢- (void)initTapGes{ UITapGestureRecognizer* tapGes = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGes:)]; // 點擊次數,默認為1,1為單擊,2為雙擊 tapGes.numberOfTapsRequired = 2; tapGes.delegate = self; [self.imgView addGestureRecognizer:tapGes];}- (void)tapGes:(UITapGestureRecognizer*)ges{ NSLog(@"%s",__func__);}// 平移手勢- (void)initPanGes{ UIPanGestureRecognizer* panGes = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGes:)]; panGes.delegate = self; [self.imgView addGestureRecognizer:panGes];}- (void)panGes:(UIPanGestureRecognizer*)ges{ // 獲取平移的坐標點 CGPoint transPoint = [ges translationInView:self.imgView]; // 在之前的基礎上移動圖片 self.imgView.transform = CGAffineTransformTranslate(self.imgView.transform, transPoint.x, transPoint.y); // 復原,必需復原 // 每次都清空一下消除坐標疊加 [ges setTranslation:CGPointZero inView:self.imgView]; NSLog(@"%s",__func__);}// 縮放手勢- (void)initPinGes{ UIPinchGestureRecognizer* pinGes = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinGes:)]; pinGes.delegate = self; [self.imgView addGestureRecognizer:pinGes];}- (void)pinGes:(UIPinchGestureRecognizer*)ges{ // 縮放 self.imgView.transform = CGAffineTransformScale(self.imgView.transform, ges.scale, ges.scale); // 復原 // 每次都清空一下消除疊加 ges.scale = 1;}// 旋轉手勢- (void)initRotation{ UIRotationGestureRecognizer* rotationGes = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationGes:)]; rotationGes.delegate = self; [self.imgView addGestureRecognizer:rotationGes];}- (void)rotationGes:(UIRotationGestureRecognizer*)ges{ // 旋轉圖片 self.imgView.transform = CGAffineTransformRotate(self.imgView.transform, ges.rotation); // 復原 // 每次都清空一下消除疊加 ges.rotation = 0; NSLog(@"%s",__func__);}// 輕掃手勢- (void)initSwipeGes{ // 創建 從右向左 輕掃的手勢 UISwipeGestureRecognizer* swipeLeftGes = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGes:)]; // 方向,默認是從左往右 // 最多只能開啟一個手勢,如果要開啟多個就得創建多個手勢 // 監聽從右向左的方向 swipeLeftGes.direction = UISwipeGestureRecognizerDirectionLeft; swipeLeftGes.delegate = self; [self.imgView addGestureRecognizer:swipeLeftGes]; // 創建 從下向上 輕掃的手勢 UISwipeGestureRecognizer* swipeUpGes = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGes:)]; // 監聽從下向上的方向 swipeUpGes.direction = UISwipeGestureRecognizerDirectionUp; swipeUpGes.delegate = self; [self.imgView addGestureRecognizer:swipeUpGes];}- (void)swipeGes:(UISwipeGestureRecognizer*)ges{ // ges.direction方向值 NSLog(@"%s diection:%lu",__func__,(unsigned long)ges.direction);}#pragma mark - UIGestureRecognizerDelegate// 判斷是否能觸發手勢- (BOOL)gestureRecognizerShouldBegin:(UITapGestureRecognizer *)gestureRecognizer{ return YES;}// 是否允許多手勢操作,不是多觸摸點- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ return YES;}@end

這里需要注意的有兩點:

1、對于 平移、縮放、旋轉 這3個手勢,我們如果要用它的值去處理的話,要記得復原!復原!復原!這點很重要!重要的事說3遍~~

  平移手勢里面我們需要設置 setTranslation:CGPointZero 來復原它的坐標值,不然下一次事件觸發這個坐標值會疊加
  縮放手勢里面設置 ges.scale = 1 來復原它的縮放值
  旋轉手勢里面設置 ges.rotation = 0 來復原它的角度值

2、假如我們需要多手勢一起用的時候就需要設置下delegate 里面的一個返回參數的方法了

// 是否允許多手勢操作,不是多觸摸點- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ return YES;}

以上所述是小編給大家介紹的IOS中各種手勢操作實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一道本无吗dⅴd在线播放一区| …久久精品99久久香蕉国产| 成人中文字幕在线观看| 欧美日本高清一区| 欧美日韩免费区域视频在线观看| 欧美黑人又粗大| 国产丝袜一区二区三区免费视频| 红桃av永久久久| 国产99在线|中文| 国产精品视频男人的天堂| 亚洲a在线播放| 97成人精品区在线播放| 中文字幕免费精品一区| 成人在线激情视频| 国产欧亚日韩视频| 97香蕉超级碰碰久久免费软件| 欧美激情一区二区久久久| 欧美极品少妇xxxxx| 国产99久久精品一区二区 夜夜躁日日躁| 久久亚洲一区二区三区四区五区高| 久久夜色撩人精品| 国产最新精品视频| 伊人伊成久久人综合网小说| 日韩欧美在线视频日韩欧美在线视频| 国产精品最新在线观看| 日韩精品视频在线观看网址| 久久九九全国免费精品观看| 国产精品嫩草影院一区二区| www.日韩.com| 久久久久久噜噜噜久久久精品| 久久久精品久久久| www.欧美视频| 国产福利精品av综合导导航| 日韩欧美精品网站| 国产精品免费一区二区三区都可以| 91精品视频大全| 欧美理论在线观看| 亚洲国产日韩欧美在线图片| 欧美精品中文字幕一区| 欧美日韩国产中文字幕| 国产精品无av码在线观看| 伊人av综合网| 九色精品美女在线| 国产美女搞久久| 成人福利在线观看| 国产在线视频2019最新视频| 欧美xxxx综合视频| 国产在线观看精品一区二区三区| 国产91精品最新在线播放| 中文字幕在线日韩| 91精品中文在线| 国产在线精品一区免费香蕉| 欧美在线亚洲在线| 91精品国产91久久久久久久久| 欧美日韩在线观看视频小说| 欧美成人免费视频| 亚洲欧美日韩天堂一区二区| 中文字幕精品视频| 亚洲精品在线观看www| 成人精品久久av网站| 中文字幕久精品免费视频| 欧美成人精品在线观看| 欧美日韩电影在线观看| 欧美成人在线免费| 97在线观看免费高清| 性欧美xxxx视频在线观看| 亚洲日韩欧美视频一区| 91日韩在线播放| 日韩精品亚洲精品| 国产一区二区三区中文| 国产精品久久一区主播| 国产激情视频一区| 成人福利网站在线观看11| 国产性猛交xxxx免费看久久| 欧美俄罗斯乱妇| 久久久久久国产精品三级玉女聊斋| 欧美裸身视频免费观看| 中文字幕自拍vr一区二区三区| 最新69国产成人精品视频免费| 日本中文字幕成人| 久久精品小视频| 久久久久久美女| 97香蕉超级碰碰久久免费的优势| 欧美精品免费在线| 日韩激情第一页| 亚洲欧美激情一区| 亚洲欧洲日产国产网站| 国产不卡av在线免费观看| 国产精品三级久久久久久电影| 这里只有精品在线播放| 日韩视频第一页| 久久99精品视频一区97| 国产精品av网站| 欧美国产亚洲精品久久久8v| 色妞久久福利网| 日韩高清电影免费观看完整| 精品成人在线视频| 日韩中文字幕国产精品| 国产精品网址在线| 欧美日韩亚洲高清| 亚洲系列中文字幕| 欧美成aaa人片免费看| 亚洲天堂av网| 中文字幕最新精品| 日韩亚洲欧美成人| 日韩av中文字幕在线播放| 亚洲欧美日韩精品| 最近的2019中文字幕免费一页| 亚洲精品av在线| 国产精品精品视频| 美女视频久久黄| 亚洲一区二区少妇| 7777免费精品视频| 成人国内精品久久久久一区| 精品国产户外野外| 久久亚洲私人国产精品va| 亚洲人精选亚洲人成在线| 国产精品色午夜在线观看| 欧美精品18videosex性欧美| 蜜臀久久99精品久久久久久宅男| 亚洲一级黄色片| 国产区精品在线观看| 精品国产91久久久| 亚洲欧美另类在线观看| 亚洲aa在线观看| 国产一区二区三区在线播放免费观看| 亚洲综合av影视| 精品一区电影国产| 亚洲精品二三区| 国产精品h片在线播放| 中文字幕在线看视频国产欧美在线看完整| 青青草成人在线| 国产精品户外野外| 国产欧美一区二区白浆黑人| 日韩免费精品视频| 精品亚洲va在线va天堂资源站| 国产成+人+综合+亚洲欧洲| 国产欧美日韩精品在线观看| 一本一本久久a久久精品牛牛影视| 久久久久久网站| 亚洲精品女av网站| 欧美日韩国产精品| 日韩高清电影好看的电视剧电影| 久久久久久久激情视频| 国产日本欧美视频| 亚洲一区二区三区成人在线视频精品| 亚洲午夜精品久久久久久性色| 色哟哟入口国产精品| 日韩av在线网址| 91精品久久久久久久久久另类| wwwwwwww亚洲| 欧美人与性动交a欧美精品| 成人自拍性视频| 永久免费毛片在线播放不卡| 亚洲国产另类 国产精品国产免费| 亚洲最大福利网| 欧美最猛性xxxxx(亚洲精品)| 亚洲国产精彩中文乱码av在线播放| 欧美激情视频网站| 色视频www在线播放国产成人| 亚洲韩国青草视频| 麻豆国产va免费精品高清在线| 亚洲xxxxx性| 久久人人看视频|