03-05-2015
通过捏合手势缩放图片(iOS开发)
通过捏合手势缩放图片(iOS开发)
本文摘自《疯狂ios讲义》之实例:通过捏合手势缩放图片,更多IOS技术知识,请登陆疯狂软件教育官网。
实例:通过捏合手势缩放图片
捏合手势处理器可以检测到用户手势捏合的比例,解析该捏合比例即可对图片进行缩放。本实例将通过捏合手势对图片进行缩放。创建一个Single View Application,该应用包含一个应用程序委托类、一个视图控制器类以及配套的Main.storyboard界面设计文件。在Interface Builder中打开该界面设计文件,将一个UIImageView拖入界面设计文件中,并让该UIImageView控件与应用界面保持相同大小。为了在程序中能访问UIImageView控件,需要将该控件绑定到控制器的imageView IBOutlet属性。
由于该程序需要对图片进行缩放,因此我们将《疯狂iOS讲义》上册第12章介绍绘图时开发的UIImage(FKCategory)分类添加到该应用中,这样就可为UIImage类增加图片缩放、旋转等方法。接下来修改视图控制器类,在视图控制器类中使用UIPinchGestureRecognizer来检测用户捏合手势,并根据捏合手势对图片进行缩放。下面是该控制器类的实现代码。
程序清单:codes/01/1.3/PinchImage/PinchImage/FKViewController.m
@implementation FKViewController
UIImage* srcImage;
CGFloat currentScale;
- (void)viewDidLoad
{
[super viewDidLoad];
[UIApplication sharedApplication].statusBarHidden = YES;
srcImage = [UIImage imageNamed:@"seashore.png"];
// 设置图片直接显示在中间(不进行任何缩放)
self.view.contentMode = UIViewContentModeCenter;
// 设置imageView初始显示的图片
self.imageView.image = srcImage;
// 设置初始的缩放比例
currentScale = 1;
// 设置imageView允许用户交互,支持多点触碰
self.imageView.userInteractionEnabled = YES;
self.imageView.multipleTouchEnabled = YES;
// 创建UIPinchGestureRecognizer手势处理器,该手势处理器激发scaleImage:方法
UIPinchGestureRecognizer* gesture = [[UIPinchGestureRecognizer alloc]
initWithTarget:self action:@selector(scaleImage:)];
// 为imageView添加手势处理器
[self.imageView addGestureRecognizer:gesture];
}
- (void) scaleImage:(UIPinchGestureRecognizer*)gesture
{
CGFloat scale = gesture.scale;
// 如果捏合手势刚刚开始
if (gesture.state == UIGestureRecognizerStateBegan)
{
// 计算当前缩放比
currentScale = self.imageView.image.size.width / srcImage.size.width;
}
// 根据手势处理器的缩放比例计算图片缩放后的目标大小
CGSize targetSize = CGSizeMake(srcImage.size.width * scale * currentScale,
srcImage.size.height * scale * currentScale);
// 对图片进行缩放
self.imageView.image = [srcImage imageByScalingToSize:targetSize];
}
@end
该实例使用捏合手势处理器的方法与前面介绍的没有任何区别,只是程序中增加了粗体字代码的判断。该粗体字代码判断当捏合手势开始时,程序会把当前图片的缩放比例记录下来作为图片的当前缩放比例,然后用捏合手势的缩放比例乘以当前缩放比例作为图片真正的缩放比例,接下来调用UIImage(FKCategory)分类中的方法对图片进行缩放。
疯狂软件教育拥有最专业的疯狂iOS学习线路图,不仅证明疯狂软件iOS无与伦比的课程深度,也证明了疯狂软件iOS深厚的技术底蕴;同时也指引了iOS学习者的自学方向。iOS培训采用全新的iMac苹果一体机教学,疯狂软件教育重点培养学员理解软件开发过程,形成良好的编码习惯,能独立完成iPhone手机和iPad平板电脑上App 开发,积累一定的项目经验,能满足企业对iOS相关的人才需求,短期内成就高薪iOS开发人才。如需了解更多,请咨询QQ:564205990抢座热线:020-28131796 咨询QQ:826193925可登陆疯狂软件教育官网查询。
本文摘自《疯狂ios讲义》之实例:通过捏合手势缩放图片,更多IOS技术知识,请登陆疯狂软件教育官网。
实例:通过捏合手势缩放图片
捏合手势处理器可以检测到用户手势捏合的比例,解析该捏合比例即可对图片进行缩放。本实例将通过捏合手势对图片进行缩放。创建一个Single View Application,该应用包含一个应用程序委托类、一个视图控制器类以及配套的Main.storyboard界面设计文件。在Interface Builder中打开该界面设计文件,将一个UIImageView拖入界面设计文件中,并让该UIImageView控件与应用界面保持相同大小。为了在程序中能访问UIImageView控件,需要将该控件绑定到控制器的imageView IBOutlet属性。
由于该程序需要对图片进行缩放,因此我们将《疯狂iOS讲义》上册第12章介绍绘图时开发的UIImage(FKCategory)分类添加到该应用中,这样就可为UIImage类增加图片缩放、旋转等方法。接下来修改视图控制器类,在视图控制器类中使用UIPinchGestureRecognizer来检测用户捏合手势,并根据捏合手势对图片进行缩放。下面是该控制器类的实现代码。
程序清单:codes/01/1.3/PinchImage/PinchImage/FKViewController.m
@implementation FKViewController
UIImage* srcImage;
CGFloat currentScale;
- (void)viewDidLoad
{
[super viewDidLoad];
[UIApplication sharedApplication].statusBarHidden = YES;
srcImage = [UIImage imageNamed:@"seashore.png"];
// 设置图片直接显示在中间(不进行任何缩放)
self.view.contentMode = UIViewContentModeCenter;
// 设置imageView初始显示的图片
self.imageView.image = srcImage;
// 设置初始的缩放比例
currentScale = 1;
// 设置imageView允许用户交互,支持多点触碰
self.imageView.userInteractionEnabled = YES;
self.imageView.multipleTouchEnabled = YES;
// 创建UIPinchGestureRecognizer手势处理器,该手势处理器激发scaleImage:方法
UIPinchGestureRecognizer* gesture = [[UIPinchGestureRecognizer alloc]
initWithTarget:self action:@selector(scaleImage:)];
// 为imageView添加手势处理器
[self.imageView addGestureRecognizer:gesture];
}
- (void) scaleImage:(UIPinchGestureRecognizer*)gesture
{
CGFloat scale = gesture.scale;
// 如果捏合手势刚刚开始
if (gesture.state == UIGestureRecognizerStateBegan)
{
// 计算当前缩放比
currentScale = self.imageView.image.size.width / srcImage.size.width;
}
// 根据手势处理器的缩放比例计算图片缩放后的目标大小
CGSize targetSize = CGSizeMake(srcImage.size.width * scale * currentScale,
srcImage.size.height * scale * currentScale);
// 对图片进行缩放
self.imageView.image = [srcImage imageByScalingToSize:targetSize];
}
@end
该实例使用捏合手势处理器的方法与前面介绍的没有任何区别,只是程序中增加了粗体字代码的判断。该粗体字代码判断当捏合手势开始时,程序会把当前图片的缩放比例记录下来作为图片的当前缩放比例,然后用捏合手势的缩放比例乘以当前缩放比例作为图片真正的缩放比例,接下来调用UIImage(FKCategory)分类中的方法对图片进行缩放。
疯狂软件教育拥有最专业的疯狂iOS学习线路图,不仅证明疯狂软件iOS无与伦比的课程深度,也证明了疯狂软件iOS深厚的技术底蕴;同时也指引了iOS学习者的自学方向。iOS培训采用全新的iMac苹果一体机教学,疯狂软件教育重点培养学员理解软件开发过程,形成良好的编码习惯,能独立完成iPhone手机和iPad平板电脑上App 开发,积累一定的项目经验,能满足企业对iOS相关的人才需求,短期内成就高薪iOS开发人才。如需了解更多,请咨询QQ:564205990抢座热线:020-28131796 咨询QQ:826193925可登陆疯狂软件教育官网查询。