UIScrollView 缩放介绍

一、缩放

1.简单说明:
要想对某些内容进行手势缩放,UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理。也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScrollView中
2.缩放原理
当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件

3.当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的viewForZoomingInScrollView:方法,这个方法返回的控件就是需要进行缩放的控件。

二 、实现缩放功能的代码示范

#import "WWViewController.h"

@interface WWViewController () 

@property (nonatomic,weak)UIScrollView *scrollView;
@property (nonatomic,weak) UIImageView *imageview;

@end

@implementation WWViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //1添加 UIScrollView
    //设置 UIScrollView的位置与屏幕大小相同
    _scrollview=[[UIScrollView alloc]initWithFrame:self.view.bounds];
    [self.view addSubview:_scrollview];
    
    //2添加图片
    //有两种方式
    //(1)一般方式
//    UIImageView  *imageview=[[UIImageView alloc]init];
//    UIImage *image=[UIImage imageNamed:@"minion"];
//    imageview.image=image;
//    imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);
    
    //(2)使用构造方法
    UIImage *image=[UIImage imageNamed:@"minion"];
    _imageview=[[UIImageView alloc]initWithImage:image];
    //调用initWithImage:方法,它创建出来的imageview的宽高和图片的宽高一样
    [_scrollview addSubview:_imageview];
    
    //设置UIScrollView的滚动范围和图片的真实尺寸一致
    _scrollview.contentSize=image.size;
    
    
    //设置实现缩放
    //设置代理scrollview的代理对象
    _scrollview.delegate=self;
    //设置最大伸缩比例
    _scrollview.maximumZoomScale=2.0;
    //设置最小伸缩比例
    _scrollview.minimumZoomScale=0.5;
    
}

//告诉scrollview要缩放的是哪个子控件
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return _imageview;
}

@end

2.代码说明
实现缩放功能的4个步骤
(1)为scrollview设置代理(self)
(2)让控制器遵守scrollview的代理协议
(3)调用代理方法,返回需要实现缩放功能的子控件
(4)设置缩放的范围(最大和最小比例)
3.思路:
a.需要告诉scrollview要缩放的时哪一个子控件,这里是scrollview内部的imageview控件
b.谁来告诉scrollview缩放哪一个控件?指定代理

三、补充知识

两种实例化UIImageView的方法:

第一种:
    UIImageView  *imageview=[[UIImageView alloc]init];
    UIImage *image=[UIImage imageNamed:@"minion"];
    imageview.image=image;
    imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);
    
第二种:
    UIImage *image=[UIImage imageNamed:@"minion"];
    self.imageview=[[UIImageView alloc]initWithImage:image];
    调用initWithImage:方法,它创建出来的imageview的宽高和图片的宽高一样
    [self.scrollview addSubview:self.imageview];

四、跟缩放相关的其他代理方法

缩放完毕的时候调用

  • (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
    正在缩放的时候调用
  • (void)scrollViewDidZoom:(UIScrollView *)scrollView

你可能感兴趣的:(UIScrollView 缩放介绍)