iOS開發基礎-UIScrollView實現圖片縮放

  當用戶在 UIScrollView 上使用捏合手勢時, UIScrollView 會給 UIScrollViewDelegate 協議發送一條消息,並調用代理的 viewForZoomingInScrollView: 方法,該方法返回的控件就是須要進行縮放的控件。html

  實現縮放功能的步驟:spa

1)讓控制器遵照 UIScrollView 的代理協議 UIScrollViewDelegate ;代理

2)爲 UIScrollView 設置代理, _scrollView.delegate = self; ;調試

3)調用代理方法 viewForZoomingInScrollView: ,返回須要實現縮放功能的子控件;code

4)設置縮放的範圍, _scrollView.maximumZoomScale、_scrollView.minimumZoomScale 。htm

實例

  新建一個Single View Application,讓 ViewController 類遵照 UIScrollViewDelegate 協議,並在類擴展中添加 UIScrollView 和 UIImageView 屬性,以下:對象

1 //ViewController.m
2 @interface ViewController ()
3 {
4     UIScrollView *_scrollView;
5     UIImageView *_imageView;
6 }

  重載 viewDidLoad 方法以下:blog

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     //添加UIScrollView
 4     _scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
 5     [self.view addSubview:_scrollView];
 6     
 7     //添加圖片
 8     UIImage *image = [UIImage imageNamed:@"beauty4.jpg"];  9     //initWithImage:方法建立的_imageView的寬高和圖片同樣
10     _imageView = [[UIImageView alloc] initWithImage:image]; 11     [_scrollView addSubview:_imageView];
12     _scrollView.contentSize = image.size;
13     
14     //設置代理對象
15     _scrollView.delegate = self;
16     //設置最大縮小放大比例
17     _scrollView.maximumZoomScale = 2.0;
18     _scrollView.minimumZoomScale = 0.5;
19 }

  實現 viewForZoomingInScrollView: 方法,告訴 _scrollView  _imageView 是須要縮放的子控件:圖片

1 //ViewController.m
2 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
3     NSLog(@"實現圖片的縮放");
4     return _imageView;
5 }

 


 

補充

  上述代碼下劃線部分,實例化 UIImageView 的方法可替換爲:開發

1 _imageView = [[UIImageView alloc] init];
2 UIImage *image = [UIImage imageNamed:@"beauty4.jpg"];
3 _imageView.image = image;
4 _imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height);

 

  跟縮放相關的其餘代理方法:

 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view  縮放完畢的時候調用。

 - (void)scrollViewDidZoom:(UIScrollView *)scrollView  正在縮放的時候調用。

  在原代碼之中添加以下代碼:

1 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
2     NSLog(@"%s", __FUNCTION__);
3 }
4 
5 - (void)scrollViewDidZoom:(UIScrollView *)scrollView {
6     NSLog(@"%s", __FUNCTION__);
7 }

 

  在真機上調試,使用捏合手勢放大圖片,輸出以下:

1 2016-02-16 16:35:07.780 WJQScrollViewDemo[189:3549] -[ViewController viewForZoomingInScrollView:]
2 2016-02-16 16:35:07.781 WJQScrollViewDemo[189:3549] -[ViewController scrollViewWillBeginZooming:withView:]
3 2016-02-16 16:35:07.798 WJQScrollViewDemo[189:3549] -[ViewController scrollViewDidZoom:]

參考博客:iOS開發UI篇—UIScrollView控件實現圖片縮放功能

代碼下載:http://vdisk.weibo.com/s/DiY98QyXCNtD9

相關文章
相關標籤/搜索