UIScrollView(缩放图片)

概述

项目中有个功能用到了图片的缩放。之前写的方法是在imageView上面add了一个捏合手势,然后根据pinch手势的scale设置imageViewframe,效果不是很好,也没有回弹效果。今天准备解决这个问题,于是各种查资料,找到了这个方法。

原理

在使用UIScrollView自带的捏合手势时,会回调
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView这个代理方法,这个代理方法返回的view就是需要缩放的view

代码

创建scrollView对象

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
scrollView.delegate = self;
//设置最大放大倍数,默认是1.0
scrollView.maximumZoomScale = 3.0;
//设置最小缩小倍数,默认是1.0
scrollView.minimumZoomScale = 0.5;
//设置默认缩放倍数,默认是1.0
scrollView.zoomScale = 1.0;
//是否打开缩放回弹效果,默认是YES
scrollView.bouncesZoom = YES;
[self.view addSubview:scrollView];

声明需要缩放的imageView对象,全局变量

@property (nonatomic, strong) UIImageView *imageView;

实例化对象

self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
self.imageView.frame = scrollView.bounds;
[scrollView addSubview:self.imageView];

scrollView的代理方法
返回需要缩放的子视图
#pragma mark - UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
//返回需要缩放的子视图
return self.imageView;
}
缩放前调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
//缩放前调用
}
正在缩放时调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
//正在缩放时调用
}

你可能感兴趣的:(UIScrollView(缩放图片))