国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS手勢的實現方法

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

本文實例為大家分享了iOS手勢的具體實現代碼,供大家參考,具體內容如下

效果

細節

1.UITouch

#import "ViewController_0.h"@interface ViewController_0 ()@property (nonatomic, strong)UILabel *label;@end@implementation ViewController_0- (void)viewDidLoad {    [super viewDidLoad];    self.label          = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];  self.label.backgroundColor  = [UIColor yellowColor];  self.label.layer.borderWidth = 1;  [self.view addSubview:self.label];    UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)];  textlabel.text   = @"拖動方塊";  [textlabel sizeToFit];  textlabel.font   = [UIFont systemFontOfSize:12];  [self.view addSubview:textlabel];}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event {  //1.拿到手勢  UITouch *touch = [touches anyObject];    //2.拿到touch 所在view的坐標  CGPoint point = [touch locationInView:self.view];    //3.讓label拿到坐標  self.label.center = point;    NSLog(@"1.手指接觸到了屏幕");}- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event {  //1.拿到手勢  UITouch *touch = [touches anyObject];    //2.拿到touch 所在view的坐標  CGPoint point = [touch locationInView:self.view];    //3.讓label拿到坐標  self.label.center = point;    NSLog(@"2.手指在屏幕上移動");}- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event {   NSLog(@"3.手指剛離開屏幕");}- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event {  NSLog(@"4.手勢失效了");}@end

2.UITapGestureRecognizer

#import "ViewController_1.h"@interface ViewController_1 ()@property (nonatomic, strong) UILabel *label;@end@implementation ViewController_1- (void)viewDidLoad {    [super viewDidLoad];  UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)];  textlabel.text   = @"電腦上操作tap手勢 alt +shift 需要連續點擊次數2次";  [textlabel sizeToFit];  textlabel.font   = [UIFont systemFontOfSize:12];  [self.view addSubview:textlabel];    self.label            = [[UILabel alloc] initWithFrame:CGRectMake(100, 150, 100, 100)];  self.label.backgroundColor    = [UIColor orangeColor];  self.label.userInteractionEnabled = YES;  self.label.text          = @"0";  self.label.textAlignment     = NSTextAlignmentCenter;  [self.view addSubview:self.label];    // 1.創建tap手勢  UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];  tap.numberOfTapsRequired  = 2; //需要輕輕點擊的次數  tap.numberOfTouchesRequired = 2;//需要的手指數量 :2根手指alt +shift 需要匹配點擊次數2次(其實直接用默認的就好)  [self.label addGestureRecognizer:tap];}- (void)labelTap:(UITapGestureRecognizer *)tap {  int num = [self.label.text intValue];  num++;  self.label.text = [NSString stringWithFormat:@"%d",num ];}@end

3.UILongPressGestureRecognizer

#import "ViewController_2.h"@interface ViewController_2 () <UIGestureRecognizerDelegate>@property (nonatomic, strong) UILabel *label;@end@implementation ViewController_2- (void)viewDidLoad {    [super viewDidLoad];    UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)];  textlabel.text   = @"long長按手勢";  [textlabel sizeToFit];  textlabel.font   = [UIFont systemFontOfSize:12];  [self.view addSubview:textlabel];    self.label            = [[UILabel alloc] initWithFrame:CGRectMake(40, 150, 200, 150)];  self.label.backgroundColor    = [UIColor grayColor];  self.label.userInteractionEnabled = YES;  self.label.text          = @"0";  self.label.textAlignment     = NSTextAlignmentCenter;  [self.view addSubview:self.label];    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];  longPress.numberOfTapsRequired     = 1;  longPress.numberOfTouchesRequired    = 1;  longPress.minimumPressDuration     = 1.0;  longPress.delegate  = self;  [self.label addGestureRecognizer:longPress];}- (void)longPressAction:(UILongPressGestureRecognizer *)longPress {  if(longPress.state == UIGestureRecognizerStateBegan) {        NSLog(@"手勢狀態開始");      } else if(longPress.state == UIGestureRecognizerStateEnded) {        NSLog(@"手勢狀態結束");    } else if(longPress.state == UIGestureRecognizerStateChanged) {        NSLog(@"手勢狀態改變");        NSInteger num = [self.label.text integerValue];    num ++;    self.label.text = [NSString stringWithFormat:@"%ld",(long)num];  }}@end 

4.UISwipeGestureRecognizer

#import "ViewController_3.h"@interface ViewController_3 ()@property (nonatomic, strong) UILabel *label;@end@implementation ViewController_3- (void)viewDidLoad {    [super viewDidLoad];   UILabel *textlabel   = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)];  textlabel.text     = @"swipe手勢 向右滑動➕1,你也可以設置左劃上劃下劃";  textlabel.numberOfLines = 0;  textlabel.font     = [UIFont systemFontOfSize:12];  [self.view addSubview:textlabel];    self.label            = [[UILabel alloc] initWithFrame:CGRectMake(100, 150, 100, 100)];  self.label.backgroundColor    = [UIColor grayColor];  self.label.userInteractionEnabled = YES;  self.label.text          = @"0";  self.label.textAlignment     = NSTextAlignmentCenter;  [self.view addSubview:self.label];  UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];  swipeGesture.direction         = UISwipeGestureRecognizerDirectionRight;//默認就是向右劃  [self.label addGestureRecognizer:swipeGesture];}-(void)swipeAction:(UISwipeGestureRecognizer *)swipe {  if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) {        NSLog(@"現在響應左劃手勢");      } else if (swipe.direction == UISwipeGestureRecognizerDirectionRight) {        NSLog(@"現在響應右劃手勢");        NSInteger num  = [self.label.text integerValue];    num ++;    self.label.text = [NSString stringWithFormat:@"%ld",(long)num];      } else if (swipe.direction == UISwipeGestureRecognizerDirectionUp) {        NSLog(@"現在響應上劃手勢");      } else if (swipe.direction == UISwipeGestureRecognizerDirectionDown) {        NSLog(@"現在響應下劃手勢");  }}@end

 5.UIPanGestureRecognizer

#import "ViewController_4.h"@interface ViewController_4 ()@property (nonatomic, strong) UILabel *label;@end@implementation ViewController_4- (void)viewDidLoad {    [super viewDidLoad];    UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)];  textlabel.text   = @"pan手勢,拖動方塊";  [textlabel sizeToFit];  textlabel.font   = [UIFont systemFontOfSize:12];  [self.view addSubview:textlabel];  self.label            = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];  self.label.backgroundColor    = [UIColor grayColor];  self.label.userInteractionEnabled = YES;  self.label.text          = @"0";  self.label.textAlignment     = NSTextAlignmentCenter;  [self.view addSubview:self.label];  UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];  [self.label addGestureRecognizer:pan];}- (void)panAction:(UIPanGestureRecognizer *)pan {    CGPoint offset  = [pan locationInView:self.view];  self.label.center = offset;}@end

6.UIRotationGestureRecognizer

#import "ViewController_5.h"@interface ViewController_5 ()@property (nonatomic, strong) UILabel *label;@end@implementation ViewController_5- (void)viewDidLoad {    [super viewDidLoad];    UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)];  textlabel.text   = @"模擬器測試旋轉手勢時,按住 option鍵,再用觸摸板或鼠標操作";  textlabel.font   = [UIFont systemFontOfSize:12];  textlabel.numberOfLines = 0;  [self.view addSubview:textlabel];  self.label            = [[UILabel alloc] initWithFrame:CGRectMake(40, 200, 200, 50)];  self.label.backgroundColor    = [UIColor grayColor];  self.label.userInteractionEnabled = YES;  self.label.text          = @"we are friends";  self.label.textAlignment     = NSTextAlignmentCenter;  [self.view addSubview:self.label];    //(模擬器測試捏合和旋轉手勢時,按住 option 鍵,再用觸摸板或鼠標操作)  UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationAction:)];  [self.view addGestureRecognizer:rotation];}- (void)rotationAction:(UIRotationGestureRecognizer *)rotation {    self.label.transform = CGAffineTransformRotate(self.label.transform, rotation.rotation);  rotation.rotation = 0; // 這個很重要!!!!!//  static float orginState;//  //  self.label.transform = CGAffineTransformMakeRotation(rotation.rotation + orginState);//  //  if (rotation.state == UIGestureRecognizerStateEnded) {//    //    orginState = orginState + rotation.state;//    self.label.transform = CGAffineTransformMakeRotation(rotation.rotation);//  }}@end

7.UIPinchGestureRecognizer

#import "ViewController_6.h"@interface ViewController_6 ()@property (nonatomic, strong) UILabel *label;@end@implementation ViewController_6- (void)viewDidLoad {    [super viewDidLoad];   UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)];  textlabel.text   = @"模擬器測試捏合手勢時,按住 option鍵,再用觸摸板或鼠標操作";  textlabel.font   = [UIFont systemFontOfSize:12];  textlabel.numberOfLines = 0;  [self.view addSubview:textlabel];    self.label            = [[UILabel alloc] initWithFrame:CGRectMake(100, 250, 80, 80)];  self.label.backgroundColor    = [UIColor grayColor];  self.label.userInteractionEnabled = YES;  self.label.text          = @"0";  self.label.textAlignment     = NSTextAlignmentCenter;  [self.view addSubview:self.label];  //  (模擬器測試捏合和旋轉手勢時,按住 option 鍵,再用觸摸板或鼠標操作)  UIPinchGestureRecognizer * pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pichGesture:)];  [self.view addGestureRecognizer:pinch];}- (void)pichGesture:(UIPinchGestureRecognizer *)pinch {    static float originScale = 1;    //手勢縮放返回的scale 是相對于上一次的  self.label.transform = CGAffineTransformMakeScale(pinch.scale * originScale , pinch.scale*originScale);    if (pinch.state == UIGestureRecognizerStateEnded) {        originScale = originScale * pinch.scale;  }}@end

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉源县| 大足县| 长泰县| 沾化县| 阿荣旗| 通辽市| 宣恩县| 前郭尔| 马关县| 忻州市| 渭源县| 南投县| 苏尼特右旗| 石泉县| 玉门市| 彭阳县| 定州市| 固镇县| 衡阳市| 宝应县| 麦盖提县| 宜阳县| 滨州市| 双柏县| 筠连县| 万年县| 达拉特旗| 金阳县| 杂多县| 柏乡县| 永昌县| 土默特左旗| 共和县| 许昌市| 霍邱县| 抚顺市| 海南省| 平邑县| 洛南县| 富蕴县| 炎陵县|