源码下载地址:http://download.youkuaiyun.com/detail/liu537192/8550461
效果图:
图1:
核心代码:
//
// JLViewController.m
// 07-旋转和缩放
//
// Created by XinYou on 15-3-31.
// Copyright (c) 2015年 vxinyou. All rights reserved.
//
#import "JLViewController.h"
@interface JLViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@end
@implementation JLViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 默认情况下图片是不能跟用户进行交互的,也就是默认情况下userInteractionEnabled = NO;
self.iconView.userInteractionEnabled = YES;
// 注意不要使用auto layout,不然缩放和旋转的效果不理想。如图1所示,将"Use Auto Layout"取消选中
[self rotate];
[self pinch];
}
- (void)pinch{
// 创建手势识别器
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)];
// 设置代理(是为了让多个手势识别器同时有效)
pinch.delegate = self;
// 添加手势识别器到对应的view
[self.iconView addGestureRecognizer:pinch];
}
- (void)rotate{
// 创建手势识别器
UIRotationGestureRecognizer *rotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateView:)];
// 设置代理(是为了让多个手势识别器同时有效)
rotate.delegate = self;
// 添加手势识别器到对应的view
[self.iconView addGestureRecognizer:rotate];
}
#pragma mark -代理方法
/**
* 是否允许多个手势识别器同时有效
*/
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
#pragma mark -自定义方法
/**
* 对view进行旋转
*/
- (void)rotateView:(UIRotationGestureRecognizer *)recognizer{
recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
// 这句代码非常重要,没有这句代码,在旋转的过程中旋转度数会累加,导致旋转越来越快
recognizer.rotation = 0;
}
/**
* 对view进行缩放
*/
- (void)pinchView:(UIPinchGestureRecognizer *)recognizer{
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
// 这句代码非常重要,没有这句代码,在缩放的过程中缩放比例会累乘,导致以极快的速度放大或者缩小。
recognizer.scale = 1;
}
@end