首页 > 代码库 > UIScrollView实现图片放大、缩小

UIScrollView实现图片放大、缩小

UIScrollView实现图片放大、缩小


一、在storyboard中添加Scroll View或者用懒加载创建UIScrollView

- (UIScrollView*)scrollView
{
   
if (_scrollView== nil) {
       
_scrollView = [[UIScrollViewalloc]initWithFrame:self.view.bounds];
       
// 设置代理
       
_scrollView.delegate= self;
       
// 设置最大/最小缩放比例
       
_scrollView.maximumZoomScale= 2.0;
       
_scrollView.minimumZoomScale= 0.2;
       
        [
self.viewaddSubview:_scrollView];
    }
   
return _scrollView;
}
注意:
UIScrollView的frame大小和父窗口view的frame大小一致

二、把imageView懒加载添加到UIScrollView
- (UIImageView*)imageView
{
   
if (_imageView== nil) {
       
_imageView = [[UIImageViewalloc]init];
       
        [
self.scrollViewaddSubview:_imageView];
    }
   
return _imageView;
}

三、设置图片
//图像的setter
- (
void)setImage:(UIImage*)image
{
   
_image = image;
   
// 设置图像视图的内容
   
self.imageView.image= image;

   
// 让图像视图根据图像自动调整大小
    [
self.imageViewsizeToFit];
   
   
// 告诉scrollView内部内容的实际大小
   
self.scrollView.contentSize= image.size;
}

注意:
设置图像视图根据图像自动调整大小,因为UIImageView的frame没有设置。
[
self.imageView sizeToFit];
告诉scrollView内部内容的实际大小
self.scrollView.contentSize = image.size;

self.scrollView和_scrollView的区别。

四、设置图像
- (void)viewDidLoad
{
    [
superviewDidLoad];

   
// 设置图像
   
self.image= [UIImageimageNamed:@"minion"];
}
五、实现UIScrollView的代理方法

#pragma mark - UIScrollView的代理方法
/**
 1>
设置了代理
 2>
指定了最大、最小的缩放比例
 
 
表示ScrollView是可以缩放的
 
 
代理方法的"返回值"实际上就是控制器告诉滚动视图,要缩放的是UIImageView
 */

//告诉ScrollView要缩放的视图是谁,具体的缩放实现,是由ScrollView来完成的
// 1> scrollView要知道缩放谁
- (
UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView
{
   
return self.imageView;
}

// 2>滚动视图即将开始缩放,通常不需要写
- (
void)scrollViewWillBeginZooming:(UIScrollView*)scrollView withView:(UIView*)view
{
   
NSLog(@"%s", __func__);
}

// 3>正在缩放,通常也不需要实现
- (
void)scrollViewDidZoom:(UIScrollView*)scrollView
{
   
//    NSLog(@"%s", __func__);
   
NSLog(@"%@",NSStringFromCGAffineTransform(self.imageView.transform));
}

// 4>完成缩放,通常也不需要实现
- (
void)scrollViewDidEndZooming:(UIScrollView*)scrollView withView:(UIView*)view atScale:(CGFloat)scale
{
   
NSLog(@"%s", __func__);
}

UIScrollView实现图片放大、缩小