zoukankan      html  css  js  c++  java
  • ios手势识别

    使用手势识别

    六种手势识别(继承于UIGestureRecongnizer基类):

    UITapGestureRecongnizer--检测view上的单击操作

    UIPinchGestureRecongnizer--检测view上两个手指的缩放操作

    UIPanGestureRecongnizer--检测view的拖拽操作

    UISwipeGestureRecongnizer--检测view的轻划操作

    UIRotationGestureRecongnizer--检测view的旋转操作

    UILongPressGestureRecongnizer-检测view上的长按操作 

     UITapGestureRecongnizer  检测view上的单击操作

    新建Empty Application项目,在xib中添加ImageView控件,Mode为Aspect Fit,选中User Interaction Enabled和Multiple Touch

    HomeViewController.h

     #import <UIKit/UIKit.h>

    @interface HomeViewController : UIViewController
    @property (retain, nonatomic) IBOutlet UIImageView *imageView;
    @end

    HomeViewController.m 

    #import "HomeViewController.h"
    @interface HomeViewController ()
    @end
    @implementation HomeViewController
    @synthesize imageView;
    - (void)viewDidLoad
    {
        
        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureHandler:)];
        tapGesture.numberOfTapsRequired = 2;
        [imageView addGestureRecognizer:tapGesture];
        [tapGesture release];
        
        [super viewDidLoad];
    }
    - (IBAction)tapGestureHandler:(UIGestureRecognizer *)sender{
        if (sender.view.contentMode == UIViewContentModeScaleAspectFit) {
            sender.view.contentMode = UIViewContentModeScaleAspectFill;
        } else {
            sender.view.contentMode = UIViewContentModeScaleAspectFit;
        }
        
    }
    - (void)dealloc {
        [imageView release];
        [super dealloc];
    }
    - (void)viewDidUnload {
        [self setImageView:nil];
        [super viewDidUnload];
    }
    @end

     UIPinchGestureRecongnizer   检测view上两个手指的缩放操作

    HomeViewController.m 
    #import "HomeViewController.h"
    @interface HomeViewController ()
    @end
    @implementation HomeViewController
    @synthesize imageView;
    CGFloat lastScaleValue = 1;
    - (void)viewDidLoad
    {
        
        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureHandler:)];
        tapGesture.numberOfTapsRequired = 2;
        [imageView addGestureRecognizer:tapGesture];
        [tapGesture release];
        
        UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureHandler:)];
        [imageView addGestureRecognizer:pinchGesture];
        [pinchGesture release];
        
        [super viewDidLoad];
    }
    - (IBAction)tapGestureHandler:(UIGestureRecognizer *)sender{
        if (sender.view.contentMode == UIViewContentModeScaleAspectFit) {
            sender.view.contentMode = UIViewContentModeScaleAspectFill;
        } else {
            sender.view.contentMode = UIViewContentModeScaleAspectFit;
        }
        
    }
    - (IBAction)pinchGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat scaleValue = [(UIPinchGestureRecognizer *)sender scale];
        

    //如果手指做放大操作,scaleValue的值大于等于1;如果手指是缩小操作,scaleValue的值小于1

        if (scaleValue > 1) {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue + (scaleValue-1), lastScaleValue + (scaleValue-1));
        }else {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue * scaleValue, lastScaleValue * scaleValue);
        } 
        

    //用户的手指离开了屏幕,将比例值记录在 lastScaleValue 变量中

        if (sender.state == UIGestureRecognizerStateEnded) {
            if (scaleValue > 1) {
                lastScaleValue += (scaleValue - 1);
            }else {
                lastScaleValue += scaleValue;
            }
        }
         
               
    }
    - (void)dealloc {
        [imageView release];
        [super dealloc];
    }
    - (void)viewDidUnload {
        [self setImageView:nil];
        [super viewDidUnload];
    }
    @end


     UIRotationGestureRecongnizer  检测view的旋转操作

     
    #import "HomeViewController.h"
    @interface HomeViewController ()
    @end
    @implementation HomeViewController
    @synthesize imageView;
    CGFloat lastScaleValue = 1;
    CGFloat rotationValue;
    - (void)viewDidLoad
    {
        
        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureHandler:)];
        tapGesture.numberOfTapsRequired = 2;
        [imageView addGestureRecognizer:tapGesture];
        [tapGesture release];
        
        UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureHandler:)];
        [imageView addGestureRecognizer:pinchGesture];
        [pinchGesture release];
        
        UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGestureHandler:)];
        [imageView addGestureRecognizer:rotationGesture];
        [rotationGesture release];
        
        [super viewDidLoad];
    }
    - (IBAction)tapGestureHandler:(UIGestureRecognizer *)sender{
        if (sender.view.contentMode == UIViewContentModeScaleAspectFit) {
            sender.view.contentMode = UIViewContentModeScaleAspectFill;
        } else {
            sender.view.contentMode = UIViewContentModeScaleAspectFit;
        }
        
    }
    - (IBAction)pinchGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat scaleValue = [(UIPinchGestureRecognizer *)sender scale];
        
        if (scaleValue > 1) {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue + (scaleValue-1), lastScaleValue + (scaleValue-1));
        }else {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue * scaleValue, lastScaleValue * scaleValue);
        } 
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            if (scaleValue > 1) {
                lastScaleValue += (scaleValue - 1);
            }else {
                lastScaleValue += scaleValue;
            }
        }
         
               
    }
    - (IBAction)rotationGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat rotation = [(UIRotationGestureRecognizer *)sender rotation];
        CGAffineTransform transform = CGAffineTransformMakeRotation(rotation + rotationValue);
        
        sender.view.transform = transform;
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            rotationValue += rotation;
        }
    }
    - (void)dealloc {
        [imageView release];
        [super dealloc];
    }
    - (void)viewDidUnload {
        [self setImageView:nil];
        [super viewDidUnload];
    }
    @end

    UIPanGestureRecongnizer  检测view的拖拽操作

     #import "HomeViewController.h"
    @interface HomeViewController ()
    @end
    @implementation HomeViewController
    @synthesize imageView;
    CGFloat lastScaleValue = 1;
    CGFloat rotationValue;
    CGPoint positionValue;
    - (void)viewDidLoad
    {
        
        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureHandler:)];
        tapGesture.numberOfTapsRequired = 2;
        [imageView addGestureRecognizer:tapGesture];
        [tapGesture release];
        
        UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureHandler:)];
        [imageView addGestureRecognizer:pinchGesture];
        [pinchGesture release];
        
        UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGestureHandler:)];
        [imageView addGestureRecognizer:rotationGesture];
        [rotationGesture release];
        
        UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureHandler:)];
        [imageView addGestureRecognizer:panGesture];
        [panGesture release];
        
        [super viewDidLoad];
    }
    - (IBAction)tapGestureHandler:(UIGestureRecognizer *)sender{
        if (sender.view.contentMode == UIViewContentModeScaleAspectFit) {
            sender.view.contentMode = UIViewContentModeScaleAspectFill;
        } else {
            sender.view.contentMode = UIViewContentModeScaleAspectFit;
        }
        
    }
    - (IBAction)pinchGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat scaleValue = [(UIPinchGestureRecognizer *)sender scale];
        
        if (scaleValue > 1) {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue + (scaleValue-1), lastScaleValue + (scaleValue-1));
        }else {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue * scaleValue, lastScaleValue * scaleValue);
        } 
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            if (scaleValue > 1) {
                lastScaleValue += (scaleValue - 1);
            }else {
                lastScaleValue += scaleValue;
            }
        }
         
               
    }
    - (IBAction)rotationGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat rotation = [(UIRotationGestureRecognizer *)sender rotation];
        CGAffineTransform transform = CGAffineTransformMakeRotation(rotation + rotationValue);
        
        sender.view.transform = transform;
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            rotationValue += rotation;
        }
    }
    - (IBAction)panGestureHandler:(UIGestureRecognizer *)sender{
        CGPoint position = [(UIPanGestureRecognizer *)sender translationInView:imageView];
        sender.view.transform = CGAffineTransformMakeTranslation(position.x + position.x, 
                                                                 position.y + position.y);
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            positionValue.x += position.x;
            positionValue.y += position.y;
        }
    }
    - (void)dealloc {
        [imageView release];
        [super dealloc];
    }
    - (void)viewDidUnload {
        [self setImageView:nil];
        [super viewDidUnload];
    }
    @end

    UISwipeGestureRecongnizer  检测view的轻划操作

    #import "HomeViewController.h"
    @interface HomeViewController ()
    @end
    @implementation HomeViewController
    @synthesize imageView;
    CGFloat lastScaleValue = 1;
    CGFloat rotationValue;
    CGPoint positionValue;
    NSArray *images;
    int imageIndex = 0;
    - (void)viewDidLoad
    {
        
        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureHandler:)];
        tapGesture.numberOfTapsRequired = 2;
        [imageView addGestureRecognizer:tapGesture];
        [tapGesture release];
        
        UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureHandler:)];
        [imageView addGestureRecognizer:pinchGesture];
        [pinchGesture release];
        
        UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGestureHandler:)];
        [imageView addGestureRecognizer:rotationGesture];
        [rotationGesture release];
        
        /*注释panGesture的拖拽操作,否则划动和拖拽操作会产生混淆
        UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureHandler:)];
        [imageView addGestureRecognizer:panGesture];
        [panGesture release];
        */
        
        images = [[NSArray alloc] initWithObjects:@"iphone.png", @"mm.jpg", @"avatar.png", nil];
        
        //默认情况下是向右的手势划动
        UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureHandler:)];
        [imageView addGestureRecognizer:swipeGesture];
        [swipeGesture release];
        
        //定义向左的手势划动
        UISwipeGestureRecognizer *swipeLeftGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureHandler:)];
        swipeLeftGesture.direction = UISwipeGestureRecognizerDirectionLeft;
        [imageView addGestureRecognizer:swipeLeftGesture];
        [swipeLeftGesture release];
        
        
        [super viewDidLoad];
    }
    - (IBAction)tapGestureHandler:(UIGestureRecognizer *)sender{
        if (sender.view.contentMode == UIViewContentModeScaleAspectFit) {
            sender.view.contentMode = UIViewContentModeScaleAspectFill;
        } else {
            sender.view.contentMode = UIViewContentModeScaleAspectFit;
        }
        
    }
    - (IBAction)pinchGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat scaleValue = [(UIPinchGestureRecognizer *)sender scale];
        
        if (scaleValue > 1) {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue + (scaleValue-1), lastScaleValue + (scaleValue-1));
        }else {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue * scaleValue, lastScaleValue * scaleValue);
        } 
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            if (scaleValue > 1) {
                lastScaleValue += (scaleValue - 1);
            }else {
                lastScaleValue += scaleValue;
            }
        }
         
               
    }
    - (IBAction)rotationGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat rotation = [(UIRotationGestureRecognizer *)sender rotation];
        CGAffineTransform transform = CGAffineTransformMakeRotation(rotation + rotationValue);
        
        sender.view.transform = transform;
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            rotationValue += rotation;
        }
    }
    - (IBAction)panGestureHandler:(UIGestureRecognizer *)sender{
        CGPoint position = [(UIPanGestureRecognizer *)sender translationInView:imageView];
        sender.view.transform = CGAffineTransformMakeTranslation(position.x + position.x, 
                                                                 position.y + position.y);
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            positionValue.x += position.x;
            positionValue.y += position.y;
        }
    }
    - (IBAction)swipeGestureHandler:(UIGestureRecognizer *)sender{
        UISwipeGestureRecognizerDirection direction =[(UISwipeGestureRecognizer *)sender direction];
        
        switch (direction) {
            case UISwipeGestureRecognizerDirectionUp:
                NSLog(@"向上划动");
                break;
                case UISwipeGestureRecognizerDirectionDown:
                NSLog(@"向下划动");
                break;
                case UISwipeGestureRecognizerDirectionLeft:
                imageIndex++;
                break;
                case UISwipeGestureRecognizerDirectionRight:
                imageIndex--;
                break;
                default:
                break;
        }
        imageIndex = (imageIndex < 0) ? ([images count] - 1):imageIndex % [images count];
        imageView.image = [UIImage imageNamed:[images objectAtIndex:imageIndex]];
    }
    - (void)dealloc {
        [images release];
        [imageView release];
        [super dealloc];
    }
    - (void)viewDidUnload {
        [self setImageView:nil];
        [super viewDidUnload];
    }
    @end

    UILongPressGestureRecongnizer  检测view上的长按操作 

     添加UIActionSheetDelegate协议

    HomeViewController.h 

    #import <UIKit/UIKit.h>
    @interface HomeViewController : UIViewController
    <UIActionSheetDelegate>{}
    @property (retain, nonatomic) IBOutlet UIImageView *imageView;
    @end

    HomeViewController.m

     #import "HomeViewController.h"

    @interface HomeViewController ()
    @end
    @implementation HomeViewController
    @synthesize imageView;
    CGFloat lastScaleValue = 1;
    CGFloat rotationValue;
    CGPoint positionValue;
    NSArray *images;
    int imageIndex = 0;
    - (void)viewDidLoad
    {
        
        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureHandler:)];
        tapGesture.numberOfTapsRequired = 2;
        [imageView addGestureRecognizer:tapGesture];
        [tapGesture release];
        
        UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureHandler:)];
        [imageView addGestureRecognizer:pinchGesture];
        [pinchGesture release];
        
        UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGestureHandler:)];
        [imageView addGestureRecognizer:rotationGesture];
        [rotationGesture release];
        
        /*注释panGesture的拖拽操作,否则划动和拖拽操作会产生混淆
        UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureHandler:)];
        [imageView addGestureRecognizer:panGesture];
        [panGesture release];
        */
        
        images = [[NSArray alloc] initWithObjects:@"iphone.png", @"mm.jpg", @"avatar.png", nil];
        
        //默认情况下是向右的手势划动
        UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureHandler:)];
        [imageView addGestureRecognizer:swipeGesture];
        [swipeGesture release];
        
        //定义向左的手势划动
        UISwipeGestureRecognizer *swipeLeftGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureHandler:)];
        swipeLeftGesture.direction = UISwipeGestureRecognizerDirectionLeft;
        [imageView addGestureRecognizer:swipeLeftGesture];
        [swipeLeftGesture release];
        
        //开始长按的内容部分
        UILongPressGestureRecognizer *longpressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longpressGestureHandler:)];
        longpressGesture.minimumPressDuration = 1;
        longpressGesture.allowableMovement = 15;
        longpressGesture.numberOfTouchesRequired = 1;
        
        [imageView addGestureRecognizer:longpressGesture];
        [longpressGesture release];
        
        
        [super viewDidLoad];
    }
    - (IBAction)tapGestureHandler:(UIGestureRecognizer *)sender{
        if (sender.view.contentMode == UIViewContentModeScaleAspectFit) {
            sender.view.contentMode = UIViewContentModeScaleAspectFill;
        } else {
            sender.view.contentMode = UIViewContentModeScaleAspectFit;
        }
        
    }
    - (IBAction)pinchGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat scaleValue = [(UIPinchGestureRecognizer *)sender scale];
        
        if (scaleValue > 1) {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue + (scaleValue-1), lastScaleValue + (scaleValue-1));
        }else {
            sender.view.transform = CGAffineTransformMakeScale(lastScaleValue * scaleValue, lastScaleValue * scaleValue);
        } 
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            if (scaleValue > 1) {
                lastScaleValue += (scaleValue - 1);
            }else {
                lastScaleValue += scaleValue;
            }
        }
         
               
    }
    - (IBAction)rotationGestureHandler:(UIGestureRecognizer *)sender{
        CGFloat rotation = [(UIRotationGestureRecognizer *)sender rotation];
        CGAffineTransform transform = CGAffineTransformMakeRotation(rotation + rotationValue);
        
        sender.view.transform = transform;
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            rotationValue += rotation;
        }
    }
    - (IBAction)panGestureHandler:(UIGestureRecognizer *)sender{
        CGPoint position = [(UIPanGestureRecognizer *)sender translationInView:imageView];
        sender.view.transform = CGAffineTransformMakeTranslation(position.x + position.x, 
                                                                 position.y + position.y);
        
        if (sender.state == UIGestureRecognizerStateEnded) {
            positionValue.x += position.x;
            positionValue.y += position.y;
        }
    }
    - (IBAction)swipeGestureHandler:(UIGestureRecognizer *)sender{
        UISwipeGestureRecognizerDirection direction =[(UISwipeGestureRecognizer *)sender direction];
        
        switch (direction) {
            case UISwipeGestureRecognizerDirectionUp:
                NSLog(@"向上划动");
                break;
                case UISwipeGestureRecognizerDirectionDown:
                NSLog(@"向下划动");
                break;
                case UISwipeGestureRecognizerDirectionLeft:
                imageIndex++;
                break;
                case UISwipeGestureRecognizerDirectionRight:
                imageIndex--;
                break;
                default:
                break;
        }
        imageIndex = (imageIndex < 0) ? ([images count] - 1):imageIndex % [images count];
        imageView.image = [UIImage imageNamed:[images objectAtIndex:imageIndex]];
    }
    - (IBAction)longpressGestureHandler:(UIGestureRecognizer *)sender{
        if ([(UILongPressGestureRecognizer *)sender state] == UIGestureRecognizerStateBegan) {
            UIActionSheet *actionSheet = [[UIActionSheet alloc] 
                                          initWithTitle:@"图片操作" 
                                          delegate:self
                                          cancelButtonTitle:nil
                                          destructiveButtonTitle:nil
                                          otherButtonTitles:@"保存", @"复制", nil];
            
            [actionSheet showInView:self.view];
            [actionSheet release];
        }
    }
    - (void)dealloc {
        [images release];
        [imageView release];
        [super dealloc];
    }
    - (void)viewDidUnload {
        [self setImageView:nil];
        [super viewDidUnload];
    }
    @end

    多点触摸识别

       有些时候,我们只想简单地去识别用户在屏幕上的操作,而不是只针对某个特定的view,我们可以通过以下四个方法进行屏幕的触摸的识别。

     touchesBegan:withEvent:当有一个或多个手指触摸屏幕时被触发。

     touchesMoved:withEvent:当有一个或多个手指在屏幕上移动时被触发。

     touchesEnded:withEvent:当有一个或多个手指离开屏幕时被触发。

     touchesCancelled:withEvent: 当系统事件(内存溢出警告或者来电)发生时,取消触摸操作。

    检测单点触摸

    HomeViewController.h code:

    #import <UIKit/UIKit.h>
    @interface HomeViewController : UIViewController
    @property (retain, nonatomic) IBOutlet UIImageView *imageView;
    @end
    HomeViewController.m code: 

     #import "HomeViewController.h"

    @interface HomeViewController ()
    @end
    @implementation HomeViewController
    @synthesize imageView;
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        NSSet *allTouches = [event allTouches];
        
        switch ([allTouches count]) {
            case 1:
            {
                UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
                
                if ([touch tapCount] == 1 ) {
                    imageView.contentMode = UIViewContentModeScaleAspectFit;
                }else if ([touch tapCount] == 2) {
                    imageView.contentMode = UIViewContentModeScaleAspectFill;
                }
            }
                break;
                
            default:
                break;
        }
    }
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    }
    - (void)dealloc {
        [imageView release];
        [super dealloc];
    }
    @end

    检测多点触摸  

    HomeViewController.h code:

    #import <UIKit/UIKit.h>
    @interface HomeViewController : UIViewController
    @property (retain, nonatomic) IBOutlet UIImageView *imageView;
    - (CGFloat)distance:(CGPoint)fromPoint toPoint:(CGPoint)toPoint;
    @end

    HomeViewController.m code:  

    #import "HomeViewController.h"
    @interface HomeViewController ()
    @end
    @implementation HomeViewController
    @synthesize imageView;
    CGFloat originalDistance;
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        NSSet *allTouches = [event allTouches];
        
        switch ([allTouches count]) {
            case 1:{
                UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
                
                if ([touch tapCount] == 1 ) {
                    imageView.contentMode = UIViewContentModeScaleAspectFit;
                }else if ([touch tapCount] == 2) {
                    imageView.contentMode = UIViewContentModeScaleAspectFill;
                }
            }
                break;
            case 2:{
            
                UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
                UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];
                
                CGPoint touch1PT = [touch1 locationInView:[self view]];
                CGPoint touch2PT = [touch2 locationInView:[self view]];
                
                NSLog(@"Touch1:%.0f, %.0f", touch1PT.x, touch1PT.y);
                NSLog(@"Touch2:%.0f, %.0f", touch2PT.x, touch2PT.y);
                
                originalDistance = [self distance:touch1PT toPoint:touch2PT];
                       
            }break;
                
            default:
                break;
        }
    }
    - (CGFloat)distance:(CGPoint)fromPoint toPoint:(CGPoint)toPoint{
        float lengthX = fromPoint.x - toPoint.x;
        float lengthY = fromPoint.y - toPoint.y;
        return sqrt((lengthX * lengthX) + (lengthY * lengthY));
    }
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
        NSSet *allTouches = [event allTouches];
        
        switch ([allTouches count]) {
            case 1:
                break;
        case 2:{
        
            UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
            UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];
            
            CGPoint touch1PT = [touch1 locationInView:[self view]];
            CGPoint touch2PT = [touch2 locationInView:[self view]];
            
            NSLog(@"Touch1:%.0f, %.0f", touch1PT.x, touch1PT.y);
            NSLog(@"Touch2:%.0f, %.0f", touch2PT.x, touch2PT.y);
            
            CGFloat currentDistance = [self distance:touch1PT toPoint:touch2PT];
            
            if (currentDistance > originalDistance) {
                imageView.frame = CGRectMake(imageView.frame.origin.x-2,imageView.frame.origin.y-2,
                                             imageView.frame.size.width+4, imageView.frame.size.height+4);
            }else {
                imageView.frame = CGRectMake(imageView.frame.origin.x+2, imageView.frame.origin.y+2,
                                             imageView.frame.size.width-4, imageView.frame.size.height-4);
            }
            originalDistance = currentDistance;
        }break;
                
            default:
                break;
        }
    }
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    }
    - (void)dealloc {
        [imageView release];
        [super dealloc];
    }
    @end
  • 相关阅读:
    Oracle学习笔记<5>
    Oracle学习笔记<4>
    fabric动态获取远程目录列表
    fabric查看本地与远程主机信息
    fabric安装使用
    pexpect实现远程操作
    pexpect的pxssh类实现远程操作
    Most Distant Point from the Sea
    Art Gallery
    Rotating Scoreboard(半平面交模板题)
  • 原文地址:https://www.cnblogs.com/hanjun/p/2749333.html
Copyright © 2011-2022 走看看