当前位置:首页 > 操作系统 > Ios

iOS开发UI篇—UIScrollView控件实现图片缩放功能

一、缩放

1.简单说明:

有些时候,我们可能要对某些内容进行手势缩放,如下图所示

技术分享

 

UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理。也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScrollView中

2.缩放原理

当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容)

技术分享

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

二、实现缩放功能

1.代码示例:

             1
            #import
            "
            YYViewController.h
            "
             2
             3
            @interface YYViewController () <UIScrollViewDelegate>
 4{
 5     UIScrollView *_scrollview;
 6     UIImageView *_imageview;
 7}
 8@end 910@implementation YYViewController
1112 - (void)viewDidLoad
13{
14    [super viewDidLoad];
1516//1添加 UIScrollView
17//设置 UIScrollView的位置与屏幕大小相同18     _scrollview=[[UIScrollView alloc]initWithFrame:self.view.bounds];
19    [self.view addSubview:_scrollview];
2021//2添加图片
22//有两种方式
23//(1)一般方式
24//    UIImageView  *imageview=[[UIImageView alloc]init];
25//    UIImage *image=[UIImage imageNamed:@"minion"];
26//    imageview.image=image;
27//    imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);
2829//(2)使用构造方法30     UIImage *image=[UIImage imageNamed:@"minion"];
31     _imageview=[[UIImageView alloc]initWithImage:image];
32//调用initWithImage:方法,它创建出来的imageview的宽高和图片的宽高一样33    [_scrollview addSubview:_imageview];
3435//设置UIScrollView的滚动范围和图片的真实尺寸一致36     _scrollview.contentSize=image.size;
373839//设置实现缩放
40//设置代理scrollview的代理对象41     _scrollview.delegate=self;
42//设置最大伸缩比例43     _scrollview.maximumZoomScale=2.0;
44//设置最小伸缩比例45     _scrollview.minimumZoomScale=0.5;
4647}
4849//告诉scrollview要缩放的是哪个子控件50 -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
51{
52return _imageview;
53}
5455@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"];

    _imageview=[[UIImageViewalloc]initWithImage:image];

    调用initWithImage:方法,它创建出来的imageview的宽高和图片的宽高一样

    [_scrollviewaddSubview:_imageview];

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

即将开始缩放的时候调用 

  - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view

正在缩放的时候调用

  - (void)scrollViewDidZoom:(UIScrollView *)scrollView

结束缩放的时候调用 

    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;

原文:http://www.cnblogs.com/zengshuilin/p/5742923.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!