概述
- 给一个UIView添加点击事件
- 单击
- 双击
- UIView动画 (这里先做简单了解,后面有详细的文章)
- 主要涉及的类UITapGestureRecognizer
示例
以一张图片为例子,实现放大缩小。
- 单击移动位置并变小
- 双击移动位置并变大
先看图
示例代码如下
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//将图片从硬盘加载到内存
UIImage* image = [UIImage imageNamed:@"bg1.png"];
//创建imageView并赋值
UIImageView* iv = [UIImageView new];
iv.image = image;
//设置imageView位置和大小
iv.frame = CGRectMake(50, 50, 200, 300);
//添加到父view
[self.view addSubview:iv];
//响应触碰事件
iv.userInteractionEnabled = YES;
//创建一个手势对象
//p1:响应事件拥有者
//p2:响应函数
UITapGestureRecognizer* tapOneGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOne:)];
//下面两个参数起到过滤的作用
//几个手指点击时触发
//默认为1
tapOneGes.numberOfTouchesRequired = 1;
//手势识别事件的事件类型:几次点击时触发
//默认为1
tapOneGes.numberOfTapsRequired = 1;
//注册手势事件响应器
[iv addGestureRecognizer:tapOneGes];
//创建一个手势对象
//p1:响应事件拥有者
//p2:响应函数
UITapGestureRecognizer* tapTwoGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwo:)];
//下面两个参数起到过滤的作用
//几个手指点击时触发
//默认为1
tapTwoGes.numberOfTouchesRequired = 1;
//手势识别事件的事件类型:几次点击时触发
//默认为1
tapTwoGes.numberOfTapsRequired = 2;
//注册手势事件响应器
[iv addGestureRecognizer:tapTwoGes];
}
//响应函数
-(void) tapOne : (UITapGestureRecognizer*) tap{
NSLog(@"点击了几次?,count=%d",tap.numberOfTapsRequired);
//点击图片放大并移动位置
UIImageView* iv = (UIImageView*)tap.view;
//添加一个动画
//p1:动画总时长
//p2:动画执行的函数体
//p3:动画结束执行的函数体
[UIView animateWithDuration:3 animations:^{
NSLog(@"begin animate");
iv.frame = CGRectMake(0, 0, 414, 896);
} completion:^(BOOL finished) {
NSLog(@"end animate");
}];
}
//响应函数
-(void) tapTwo : (UITapGestureRecognizer*) tap{
NSLog(@"点击了几次?,count=%d",tap.numberOfTapsRequired);
//点击图片缩小并移动位置
UIImageView* iv = (UIImageView*)tap.view;
//添加一个动画
[UIView animateWithDuration:3 animations:^{
NSLog(@"begin animate");
iv.frame = CGRectMake(50, 50, 200, 300);
} completion:^(BOOL finished) {
NSLog(@"end animate");
}];
}
@end