天天看点

UI - UIGestureRecognizer 手势

UIGestureRecognizer里有7个手势,下面介绍3种常用的手势

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    // 如果图片的名字是以png结尾 可以只写图片名 否则图片名和格式都要写出来
//    UIImage *image = [UIImage imageNamed:@"2"];
    UIImage *image = [UIImage imageWithContentsOfFile:@"/Users/lanou/Desktop/壁纸/97054020.jpg"];
    UIImageView *imageView = [[UIImageView alloc]initWithImage:(image)];
    imageView.frame = CGRectMake(, , , );
    imageView.userInteractionEnabled = YES;
    [self.view addSubview:imageView];
    [imageView release];

    // 创建一个轻拍手势
    /*
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(doTap:)];
    [imageView addGestureRecognizer:tap];
    [tap release];
     */

    // 创建一个旋转手势

    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(doRotation:)];
    [imageView addGestureRecognizer:rotation];
    rotation.delegate = self;
    [rotation release];


    // 创建一个捏合手势
    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(doPinch:)];
    [imageView addGestureRecognizer:pinch];
    pinch.delegate = self;
    [pinch release];



    /*
    NSMutableArray *arr = [NSMutableArray arrayWithCapacity:0];
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)];
    for (int i = 1; i <= 2; i++) {
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"1-%d(被拖移).tiff", i]];
        [arr addObject:image];
    }
    imageView.animationImages = arr;
    [imageView setAnimationDuration:0.5];
    [imageView setAnimationRepeatCount:4];
    [imageView startAnimating];
    [self.view addSubview:imageView];
    [imageView release];
     */

}

- (void)doTap:(UITapGestureRecognizer *)tap
{
    // 通过tap.view可以获得当前手势放置在哪一个view上
//    NSLog(@"被点击了 (╯‵□′)╯︵┻━┻ FUCK NO%@", tap.view);

    //进入第二个界面
    //1>创建第二个界面
    SecondViewController *secondVC = [[SecondViewController alloc]init];
    //2>进入
    [self presentViewController:secondVC animated:YES completion:^{
    }];
    [secondVC release];
}
#pragma mark - doRotation
- (void)doRotation:(UIRotationGestureRecognizer *)rotation
{
//    NSLog(@"旋转木马��");
    // 在做旋转的时候对应的有两个函数,一个是CGAffineTransformMakeRotation 还有一个就是CGAffineTransformRotation这两个函数的区别就在于第二个函数可以在上次的基础上继续旋转,第一个函数只能做一次旋转
    // 1.在上次的基础上做旋转
    rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation);
    // 2.将手势识别器的旋转角度归零 下次让其在新的旋转角度上进行旋转 而不是累加
    rotation.rotation = ;

}
#pragma mark - doPinch
- (void)doPinch:(UIPinchGestureRecognizer *)pinch
{
    pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale , pinch.scale);
    pinch.scale = ;
}

#pragma mark - 几个手势同时使用
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}