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

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

一、缩放

1.简单说明:

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

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

 

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

2.缩放原理

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

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

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

二、实现缩放功能

1.代码示例:

 1 //

 2 //  Created by 鑫 on 14-10-6.

 3 //  Copyright (c) 2014年 梁镋鑫. All rights reserved.

 4 //

 5 

 6 #import "TXViewController.h"

 7 

 8 @interface TXViewController ()<UIScrollViewDelegate>

 9 {

10     UIScrollView * _scrollview;

11     UIImageView * _imageview;

12 }

13 @end

14 

15 @implementation TXViewController

16 

17 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

18 {

19     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

20     if (self) {

21         // Custom initialization

22     }

23     return self;

24 }

25 

26 - (void)viewDidLoad

27 {

28     [super viewDidLoad];

29     

30     _scrollview = [[UIScrollView alloc]initWithFrame:self.view.bounds];

31     [self.view addSubview:_scrollview];

32     

33     //添加图片

34     //有两种方式

35         //(1)一般方式

36      //    UIImageView  *imageview=[[UIImageView alloc]init];

37      //    UIImage *image=[UIImage imageNamed:@"minion"];

38      //    imageview.image=image;

39      //    imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);

40     

41          //(2)使用构造方法

42     UIImage *image = [UIImage imageNamed:@"minion" ];

43     _imageview = [[UIImageView alloc]initWithImage:image];

44     

45     [_scrollview addSubview:_imageview];

46     //调用initWithImge方法,他创建的imageview的宽高跟图片一样

47     

48     //设置UIscrollView的滚动范围和图片一样

49     _scrollview.contentSize = image.size;

50     

51     //实现缩放

52     //设置代理

53     _scrollview.delegate = self;

54     

55     //设置最大伸缩比例

56     _scrollview.maximumZoomScale =2.0;

57     //设置最小伸缩比例

58     

59     _scrollview.minimumZoomScale =0.2;

60     

61     

62 }

63 

64 -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

65  {

66     return _imageview;

67      }

68 - (void)didReceiveMemoryWarning

69 {

70     [super didReceiveMemoryWarning];

71     // Dispose of any resources that can be recreated.

72 }

73 

74 

75 

76 @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

 

 
 

你可能感兴趣的:(uiscrollview)