iOS UIGestureRecognize(手势放大 缩小 旋转 功能)~demo

来源:互联网 发布:网络健康度检测插件 编辑:程序博客网 时间:2024/06/08 14:21

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

/**

注意点: 1.看 GIF 效果图.

       2.看连线视图的效果图.

       3.看实现代码(直接复制实现效果).

*/

一、GIF 效果图:


二、连线视图的效果图:

图1:



三、实现代码:

=======

================================

=======

控制器1:

//  ViewController.m

//  手势 dome

//

//  Created by 石虎 on 2017/7/26.

//  Copyright © 2017 shihu. All rights reserved.

//


#import "ViewController.h"


@interface ViewController ()


@property (weak,nonatomic)IBOutletUIImageView *imageView;

@property(nonatomic)CGFloat lastRotation;//最后一次旋转

@end


/**

 UIGestureRecognize的子类类别有以下几种:

 

 UITapGestureRecognizer            //轻拍识别器

 UIPinchGestureRecognizer         //捏合识别器

 UIRotationGestureRecognizer     //旋转识别器

 UISwipeGestureRecognizer       //扫动识别器

 UIPanGestureRecognizer        //拖动识别器

 UILongPressGestureRecognizer //长按识别器

 

 下面的例子我是用UIPinchGestureRecognizerUIRotationGestureRecognizer通过手势实现图片旋转和缩小放大。

 */


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    

    //添加捏合手势识别器,changeImageSize:方法实现图片的放大与缩小

    UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(changeImageSize:)];

    [self.viewaddGestureRecognizer:pinchRecognizer];

    

    //添加旋转手势识别器,rotateImage:方法实现图片的旋转

    UIRotationGestureRecognizer *rotateRecognizer = [[UIRotationGestureRecognizeralloc]initWithTarget:selfaction:@selector(rotateImage:)];

    [self.viewaddGestureRecognizer:rotateRecognizer];


}


#pragma mark -- 捏合手势识别器

-(void)changeImageSize:(UIPinchGestureRecognizer *)recognizer

{

    CGRect frame =self.imageView.frame;

    

    //监听两手指滑动的距离,改变imageViewframe

    frame.size.width = recognizer.scale*128;

    frame.size.height = recognizer.scale*128;

    self.imageView.frame = frame;

    

    //保证imageView中心不动

    self.imageView.center =CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2);

}


#pragma mark - 旋转手势识别器监听

-(void)rotateImage:(UIRotationGestureRecognizer *)rotateRecognizer

{

    //改变imageView的角度,使图片旋转

    if ([rotateRecognizerstate]==UIGestureRecognizerStateEnded) {

        self.lastRotation =0.0;

        return;

    }

    CGAffineTransform currentTransform =self.imageView.transform;

    CGFloat rotation =0.0 - (self.lastRotation - rotateRecognizer.rotation);

    //拿到当前的位置尺寸

    CGAffineTransform newTransform =CGAffineTransformRotate(currentTransform,rotation);

    self.imageView.transform = newTransform;

    //显示最后一次的位置

    self.lastRotation = rotateRecognizer.rotation;

}

@end



=======

================================

=======


谢谢!!!


原创粉丝点击