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

來源:互聯網
上載者:User

標籤:

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 YYViewController11 12 - (void)viewDidLoad13 {14     [super viewDidLoad];15     16     //1添加 UIScrollView17     //設定 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 *)scrollView51 {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

 

  

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.