iOS開發UI篇—UIScrollView控件實現圖片縮放功能


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
 9 
10 @implementation YYViewController
11 
12 - (void)viewDidLoad
13 {
14     [super viewDidLoad];
15     
16     //1添加 UIScrollView
17     //設置 UIScrollView的位置與屏幕大小相同
18     _scrollview=[[UIScrollView alloc]initWithFrame:self.view.bounds];
19     [self.view addSubview:_scrollview];
20     
21     //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);
28     
29     //(2)使用構造方法
30     UIImage *image=[UIImage imageNamed:@"minion"];
31     _imageview=[[UIImageView alloc]initWithImage:image];
32     //調用initWithImage:方法,它創建出來的imageview的寬高和圖片的寬高一樣
33     [_scrollview addSubview:_imageview];
34     
35     //設置UIScrollView的滾動范圍和圖片的真實尺寸一致
36     _scrollview.contentSize=image.size;
37     
38     
39     //設置實現縮放
40     //設置代理scrollview的代理對象
41     _scrollview.delegate=self;
42     //設置最大伸縮比例
43     _scrollview.maximumZoomScale=2.0;
44     //設置最小伸縮比例
45     _scrollview.minimumZoomScale=0.5;
46     
47 }
48 
49 //告訴scrollview要縮放的是哪個子控件
50 -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
51 {
52     return _imageview;
53 }
54 
55 @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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM