手势操作

import "AppDelegate.h"

@interface AppDelegate ()<UIGestureRecognizerDelegate>

@property (nonatomic ,retain)UIImageView *imageView;

@end

@implementation AppDelegate
// 自定义按钮的回调
-(void)customBtn:(UIButton*)sender{
NSLog(@"************");
}

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    [self.window setRootViewController:[[UIViewController alloc]init]];

    // 自定义按钮
    CustomButton *customBtn = [[CustomButton alloc]initWithFrame:CGRectMake(50, 30, 80, 50)];
    [customBtn setTitle:@"我是假冒的"];
    [customBtn addTarget:self action:@selector(customBtn:) forControlEvents:customButtonTouchUpInside];
    [self.window addSubview:customBtn];

    // 初始化一个视图(响应者)来承载手势
    UIView *gestureView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    // 当前视图放置在屏幕中
    gestureView.center = self.window.center;
    gestureView.backgroundColor = [UIColor redColor];
    [self.window addSubview:gestureView];

    // 初始化textField(回收键盘所用)
    UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(150, 150, 100, 50)];
    textField.placeholder = @"请输入。。。。";
    textField.tag = 1000;
    [self.window addSubview:textField];

      //  初始化UIImageView
    

    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(150, 200, 150, 200)];
    imageView.tag = 3000;

    // imageView动图
    NSMutableArray *mArray = [NSMutableArray array];
    for (int i = 1 ; i < 12 ; i++) {
    [mArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%d.tiff",i]]];
    }
    imageView.animationImages = mArray;
    // 设置动画执行的时长(单位为秒)
    imageView.animationDuration = 1.5;
    // 开始动画
    [imageView startAnimating];
    // 动画结束
    [imageView stopAnimating];

    imageView.image = [UIImage imageNamed:@"11.png"];
    // UIImageView 的用户交互默认是关闭的,要想使他处理触摸事件,我们需要手动打开它
    imageView.userInteractionEnabled = YES;
    [self.window addSubview:imageView];

    // 创建开启、结束动画的按钮
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
    btn.frame = CGRectMake(150, 0, 80, 50);
    [btn setTitle:@"开启/停止" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.window addSubview:btn];

    // 轻拍手势
    UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];

    // 设置触控对象(触控点个数)
    [tapGR setNumberOfTouchesRequired:1];
    // 设置轻拍的次数(点击次数)
    [tapGR setNumberOfTapsRequired:2];
    // 给创建好的视图添加手势(一个视图可以添加多个手势,但是一个手势只能添加到一个视图上面)
    // [gestureView addGestureRecognizer:tapGR];
    // 点击屏幕空白处回收键盘(取消textField的第一响应者)
    // [self.window addGestureRecognizer:tapGR]; // 回收键盘所用
    // 给图片添加手势
    [imageView addGestureRecognizer:tapGR];

    // 捏合手势
    UIPinchGestureRecognizer *pinchGR = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAction:)];
    [imageView addGestureRecognizer:pinchGR];
    pinchGR.delegate = self;

    // 旋转手势
    UIRotationGestureRecognizer *rotationGR = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)];
    [imageView addGestureRecognizer:rotationGR];

      //  平移手势
    

// UIPanGestureRecognizer *panGR = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];
// [imageView addGestureRecognizer:panGR];

//  屏幕边缘轻扫手势
UIScreenEdgePanGestureRecognizer *screenEdgePanGR = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(screenEdgePanAction:)];
[self.window addGestureRecognizer:screenEdgePanGR];

//  长按手势
UILongPressGestureRecognizer *longPressGR = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)];
[self.window addGestureRecognizer:longPressGR];

//  轻扫手势
UISwipeGestureRecognizer *swipeGR = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)];
[self.window addGestureRecognizer:swipeGR];
return YES;

};

pragma mark -- 手势的代理方法

// 使得多个手势可以同时相应
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
// 返回值为YES时,当执行一个手势的操作的时候,也可以执行其他手势的操作
return YES;
}

// 轻拍手势的回调方法
-(void)tapAction:(UITapGestureRecognizer*)sender{
// 可以根据手势得到它当前所作用的视图
// UIImageView imageView = (UIImageView)sender.view;
// imageView.frame = CGRectMake(50, 50, 50, 50);

NSLog(@"我轻拍了gestureView");

// // 得到textField(注意类型强转)
// UITextField tagTextField = (UITextField)[self.window viewWithTag:1000];
// // 回收键盘 (取消第一响应者)
// [tagTextField resignFirstResponder];
}

// 捏合手势的回调方法
-(void)pinchAction:(UIPinchGestureRecognizer*)sender{

//  通过捏合手势得到缩放比例
float scale = sender.scale;
NSLog(@"%.1f",scale);
    
//  得到该手势作用的视图
UIView *view = sender.view;
//  2D仿射变换函数中 的缩放函数来实现视图的放大缩小
//  是在原有基础上改变当前视图
// <#CGAffineTransform t#>参数:现有视图的transform值
//  CGFloat sx 参数:x轴上的缩放比例
//  <#CGFloat sy#>参数:y轴上的缩放比例

// view.transform = CGAffineTransformMakeScale(0.5, 0.5); // 在视图最初(初始状态)的transform状态上改变,不管执行多少次,都是以最初的transform状态为基础来改变的
view.transform = CGAffineTransformScale(view.transform, scale, scale);
// 每次捏合动作完毕之后,上次捏合值复原,使它每次都是从100%开始缩放
sender.scale = 1;
NSLog(@"捏合手势");
}

// 旋转手势的回调方法
-(void)rotationAction:(UIRotationGestureRecognizer*)sender{
// 通过该手势得到旋转角度
float rotation = sender.rotation;

//  得到该手势作用的视图
UIView *view = sender.view;
//  通过2D仿射变换函数中的旋转函数来使得当前视图旋转
//  <#CGAffineTransform t#>参数:现有视图的transform值(矩阵)
//  <#CGFloat angle#>参数:旋转角度
view.transform = CGAffineTransformRotate(view.transform, rotation);
    //  旋转之后复原
sender.rotation = 0;

}

// 平移手势的回调方法
-(void)panAction:(UIPanGestureRecognizer*)sender{
// 得到该手势作用的视图
UIView *view = sender.view;
// 得到我们在视图上移动的偏移量
CGPoint currentPoint = [sender translationInView:view.superview];
// 通过2D仿射变换函数中与位移有关的函数实现视图位置变化
view.transform = CGAffineTransformTranslate(view.transform, currentPoint.x , currentPoint.y);
// 复原
[sender setTranslation:CGPointZero inView:view.superview];
NSLog(@"平移手势");
}

// 屏幕边缘轻扫手势回调方法
-(void)screenEdgePanAction:(UIScreenEdgePanGestureRecognizer*)sender{
NSLog(@"屏幕边缘轻扫手势");
}

// 长按手势的回调方法
-(void)longPressAction:(UILongPressGestureRecognizer*)sender{
// 设置当前长按最小的时长
sender.minimumPressDuration = 1.5;
// 设置允许移动的范围
sender.allowableMovement = 2;
NSLog(@"长按手势");
}

// 轻扫手势
-(void)swipeAction:(UISwipeGestureRecognizer*)sender{
sender.numberOfTouchesRequired =1;
sender.direction = UISwipeGestureRecognizerDirectionLeft;
NSLog(@"向左轻扫手势");
}

// 动画开关按钮的回调方法
-(void)buttonAction:(UIButton*)sender{
UIImageView imageView = (UIImageView)[self.window viewWithTag:3000];
if (imageView.isAnimating) {
[imageView stopAnimating];
[imageView setImage:[UIImage imageNamed:@"11.png"]];
}else{
imageView.image = nil;
[imageView startAnimating];
}
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容