手势

来源:互联网 发布:java排序方法有哪些 编辑:程序博客网 时间:2024/04/29 17:40
////  MainViewController.m//  UI05_手势识别器////  Created by dllo on 15/8/4.//  Copyright (c) 2015年 dllo. All rights reserved.//#import "MainViewController.h"@interface MainViewController ()<UIAlertViewDelegate>@property(nonatomic, retain)UIImageView *imageView;@property(nonatomic, assign)BOOL isOn;@property(nonatomic, retain)UIAlertView *warning;@property(nonatomic, assign)CGAffineTransform transform;@property(nonatomic, assign)CGAffineTransform originTransform;@property(nonatomic, retain)UILabel *label;@end@implementation MainViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.    UIImage *image = [UIImage imageNamed:@"9f35c606f52b0d55a333356b74187acf.jpeg"];    _imageView = [[UIImageView alloc] initWithImage:image];//    UIImage *image2 = [UIImage imageNamed:@"MA~LR_T3(UZ9]`UQ_5T6P%U.jpg"];    self.imageView.frame = CGRectMake(40, 40, 280, 400);    [self.view addSubview:self.imageView];        // 把图片的用户交互打开,它默认是关闭的,此外还有一个控件是label        self.imageView.userInteractionEnabled = YES;        // 手势的使用    // 1.点击        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];    // 设置点击几次才会触发方法    tap.numberOfTapsRequired = 2;    // 设置几根手指    tap.numberOfTouchesRequired = 2;    // 手势添加到图片上    [self.imageView addGestureRecognizer:tap];    [tap release];        UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];    // 设置长按触发的最小时间    longPress.minimumPressDuration = 2;    // 用户手指在长按过程中允许移动的距离    longPress.allowableMovement = 200;    // 把手势添加到图片上    [self.imageView addGestureRecognizer:longPress];    [longPress release];            // 3.创建一个旋转的手势    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotaionAction:)];    // 把手势放到图片上    [self.imageView addGestureRecognizer:rotation];    // 释放    [rotation release];    self.originTransform =  self.imageView.transform;    self.transform  = self.imageView.transform;        // 4.捏合    // 创建    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];    // 添加    [self.imageView addGestureRecognizer:pinch];    // 释放    [pinch release];           // 5.拖拽    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];    [self.imageView addGestureRecognizer:pan];    [pan release];        // 6.清扫    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];    [self.imageView addGestureRecognizer:swipe];    [swipe release];            // 7.屏幕边际手势,iOS7.0之后出现的手势 // 崔某分享//    UIScreenEdgePanGestureRecognizer        UIStepper *stepper = [[UIStepper alloc] initWithFrame:CGRectMake(200, 500, 100, 30)];    [self.view addSubview:stepper];[stepper release];        self.label = [[UILabel alloc]initWithFrame:CGRectMake(75, 500, 100, 30)];    self.label.layer.borderWidth = 1;    [self.view addSubview:self.label];[self.label release];    [stepper addTarget:self action:@selector(click:) forControlEvents:UIControlEventValueChanged];    self.label.text = @"1";    stepper.wraps = NO; // 循环    stepper.minimumValue = 0.1;    stepper.maximumValue = 4;    stepper.stepValue = 0.1;    stepper.value = 1;    stepper.autorepeat = YES; // 持续递增    stepper.continuous = YES;        }- (void)click:(UIStepper *)stepper{     self.label.text = [NSString stringWithFormat:@"%lg",stepper.value];    self.imageView.transform = CGAffineTransformScale(self.transform, stepper.value, stepper.value);}- (void)swipeAction:(UISwipeGestureRecognizer *)swipe{    if (swipe.direction == UISwipeGestureRecognizerDirectionRight) {        NSLog(@"向右");    }}- (void)panAction:(UIPanGestureRecognizer *)pan{    UIImageView *imageView = (UIImageView *)pan.view;    // 通过手势获得经过的点    CGPoint p = [pan translationInView:imageView];    // 设置移动位置    imageView.transform = CGAffineTransformTranslate(imageView.transform, p.x, p.y);    // 为了防止手势在操作的时候视图消失    [pan setTranslation:CGPointZero inView:imageView];    self.transform = imageView.transform;    }- (void)pinchAction:(UIPinchGestureRecognizer *)pinch{//    NSLog(@"测试");    UIImageView *imageView = (UIImageView *)pinch.view;    // 通过transform改变图片大小    imageView.transform = CGAffineTransformScale(imageView.transform, pinch.scale, pinch.scale);      // 为了防止手势的变化让图片直接消失    pinch.scale = 1;    self.transform = imageView.transform;}- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{    self.imageView.transform = self.originTransform;    self.label.text = @"1";    self.transform = self.originTransform;}#pragma mark 通过图片的旋转手势让图片发生旋转- (void)rotaionAction:(UIRotationGestureRecognizer *)rotation{//    NSLog(@"测试一下旋转");    // 可以通过手势获取手势添加的视图是哪个    UIImageView *imageView = (UIImageView *)rotation.view;    // 进行旋转的操作, 通过transform属性,来让视图旋转    imageView.transform = CGAffineTransformRotate(imageView.transform, rotation.rotation);    rotation.rotation = 0;    self.transform = imageView.transform;    }- (void)tapAction:(UITapGestureRecognizer *)tap{    if (self.isOn) {        self.imageView.image = [UIImage imageNamed:@"MA~LR_T3(UZ9]`UQ_5T6P%U.jpg"];    } else {self.imageView.image = [UIImage imageNamed:@"9f35c606f52b0d55a333356b74187acf.jpeg"];}    self.isOn ^= 1;}- (void)longPressAction:(UILongPressGestureRecognizer *)longPress{    if (!self.warning) {        self.warning = [[UIAlertView alloc] initWithTitle:@"注意" message:@"你好" delegate:self cancelButtonTitle:@"拜拜" otherButtonTitles:nil, nil];    }     [self.warning show];}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {    // Get the new view controller using [segue destinationViewController].    // Pass the selected object to the new view controller.}*/@end

0 0
原创粉丝点击