手势识别器

UIImageView

这个类是iOS专门用来显示图片的类,几乎所有的图片,都是用这个类显示的。

初始化方法:initWithImage:

UIImageView *img = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"2.png"]];

img.frame = CGRectMake(100, 100, 200, 200);

通过图片名来初始化一个UIImageView类。

注意:

ImageView的默认是NO,是关闭交互。要将userInteractionEnabled(响应者链是否交互)设置为YES

self.img.userInteractionEnabled = YES;

手势

手势是加在某个视图上的,否则手势无效。

轻拍手势:

// 轻拍手势

// 创建轻拍手势识别器

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];

// 轻拍手势响应方法

- (void)tapAction:(UITapGestureRecognizer *)sender{

NSLog(@"我是轻拍手势..");

// 换图片

// 获取手势图片

UIImageView *temp = (UIImageView *)sender.view;

temp.image = [UIImage imageNamed:@"3.png"];

}

长按手势:

// 长按手势

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)];

longPress.minimumPressDuration = 0.5;

[self.img addGestureRecognizer:longPress];

// 长按响应方法

- (void)longPressAction:(UILongPressGestureRecognizer *)sender{

NSLog(@"长按手势");

if (sender.state == UIGestureRecognizerStateBegan) {

NSLog(@"长按开始..");

[UIView animateWithDuration:1 animations:^{

// 修改view的frame

CGRect temp1 = sender.view.frame;

temp1.size.width +=50;

temp1.size.height +=50;

// 修改完成附回

sender.view.frame = temp1;

sender.view.alpha = 0.5;

}];

}else if (sender.state == UIGestureRecognizerStateEnded){

NSLog(@"长按结束..");

[UIView animateWithDuration:1 animations:^{

// 修改view的frame

CGRect temp1 = sender.view.frame;

temp1.size.width -=50;

temp1.size.height -=50;

// 修改完成附回

sender.view.frame = temp1;

sender.view.alpha = 1;

}];

}

}

旋转手势:

// 旋转

UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)];

[self.img addGestureRecognizer:rotation];

// 旋转手势响应方法

- (void)rotationAction:(UIRotationGestureRecognizer *)sender{

NSLog(@"我是旋转手势..");

sender.view.transform = CGAffineTransformRotate(sender.view.transform, sender.rotation);

sender.rotation = 0;

}

捏合手势:

// 捏合

UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAction:)];

[self.img addGestureRecognizer:pinch];

// 捏合手势响应方法

- (void)pinchAction:(UIPinchGestureRecognizer *)sender{

NSLog(@"我是捏合手势");

sender.view.transform = CGAffineTransformScale(sender.view.transform, sender.scale, sender.scale);

sender.scale = 1;

}

平移手势:

// 平移

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];

[self.img addGestureRecognizer:pan];

// 平移手势响应方法

- (void)panAction:(UIPanGestureRecognizer *)sender{

NSLog(@"我是平移手势..");

CGPoint point = [sender translationInView:sender.view];

sender.view.transform = CGAffineTransformTranslate(sender.view.transform, point.x, point.y);

// 将偏移量归零

[sender setTranslation:CGPointZero inView:sender.view];

}

边缘触发:

时间: 2024-10-02 15:40:50

手势识别器的相关文章

UIKit框架(16)手势识别器

UIGestureRecognizer 利用手势识别器,能够轻松识别用户在某个view上面做一些常见的手势 UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer                敲击 UIPinchGestureRecognizer            捏合手势 UIPanGestureRecognizer               拖拽 UISwipeGestureRecog

UI开发----target/action设计模式和代理设计模式以及手势识别器

//  Created By 郭仔  2015年04月16日21:50:33 眼睛有点痛,视力也在急速下降,心灵之窗,注意保护! ================================================ 耦合是衡量?一个程序写的好坏的标准之?一, 耦合是衡量模块与模块之间关联程度的指标 "?高内聚,低耦合"是?面向对象编程的核⼼心思想: ================ 设计模式思想很重要的 ================== target/action设计模

iOS常用手势识别器

手势识别状态: typedef NS_ENUM(NSInteger, UIGestureRecognizerState) { // 没有触摸事件发生,所有手势识别的默认状态 UIGestureRecognizerStatePossible, // 一个手势已经开始但尚未改变或者完成时 UIGestureRecognizerStateBegan, // 手势状态改变 UIGestureRecognizerStateChanged, // 手势完成 UIGestureRecognizerStateE

第五讲 设计模式 手势识别器

一.target/action设计模式 二.代理设计模式(delegate模式) delegate代理模式实现的步骤: 1.建立protocol协议文件,在其中声明想要执行的动作或事件 2.将协议引入要通过代理去实现的文件(在.h文件声明,在.m文件写需要通过代理去完成的事件) 3.让代理人(及代理别人执行文件的一方)遵守协议(.m文件),并实现相应的代理事件 实例代码: 练习:通过代理让自定义视图控制器帮助changeview(其是rootview子视图)完成变换颜色事件 Appdelegat

iOS 手势识别器概述

手势识别器 iOS 手势识别器(UIGestureRecognizer) 点击手势(UITapGestureRecognizer) 滑动手势(UISwipeGestureRecognizer) 旋转手势(UIRotationGestureRecognizer) 捏合手势( UIPinchGestureRecognizer) 长按手势( UILongPressGestureRecognizer) 平移手势( UIPanGestureRecognizer) 屏幕边缘平移手势(UIScreenEdge

UI-target...action设计模式,手势识别器.UIimageview

target-action设计模式 iOS设计模式之Target-Action主要是为了降低代码的耦合性.顾名思义      Target-Action模式就是指  目标-动作模式,它贯穿于iOS开发始终. 提到Target-Action,先说2个词     “高内聚,低耦合”      这主要是评价一个软件的好坏 它评判软件的好坏主要靠模板之间内聚是否高,模块间耦合度是否低. 其实Target-action模式很简单,就是当某个事件发生时,调用那个对象中的那个方法.比如:点击按钮时,调用Con

UI基础:target...action设计模式,手势识别器.UIimageview

使用target..action和delegate设计模式可以实现解耦.使代码更加优化. 手势识别器: 手势识别器:是对触摸事件做了封装,无需自己去判断某个手势是否触发,手势识别器本身起到了识别作用,所在我们可以把重心放在识别之后该去做什么操作上面.很方便. 手势识别器是iOS中比较抽象的一个类,用于识别一个手势,所谓的手势:有规律的触摸. 手势识别器有7个子类: 分别是:轻怕手势,轻移手势,清扫手势,缩放手势,旋转手势,长按手势,以及屏幕边缘平移手势. 一旦指定的手势别识别了,就可以执行自定义

我的IOS学习之路(三):手势识别器

在iOS的学习中,对于手势的处理是极为重要的,如对于图片,我们经常需要进行旋转,缩放以及移动等.这里做一下总结,详见代码. 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 UIImage *image = [UIImage imageNamed:@"018.png"]; 5 UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 6 imageView.

iOS的触摸事件的用法以及和手势识别器的区别

1.首先来介绍下触摸事件和手势识别器的利与弊 触摸事件和手势识别器二者之间有直接的关系 手势识别器是在触摸事件的基础上演变过来的 当我们用到触摸事件时 默认的uiview是没有什么效果的 只能自定义view才能实现事件的触摸 通常用到的方法如下: – touchesBegan:withEvent: – touchesMoved:withEvent: – touchesEnded:withEvent: - touchesCancelled:withEvent: 而手势识别器是在触摸事件的基础上而封