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

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

1、縮放代理

1.簡單說明:code

有些時候,咱們可能要對某些內容進行手勢縮放,以下圖所示對象

 

UIScrollView不只能滾動顯示大量內容,還能對其內容進行縮放處理。也就是說,要完成縮放功能的話,只須要將須要縮放的內容添加到UIScrollView中blog

2.縮放原理圖片

當用戶在UIScrollView身上使用捏合手勢時,UIScrollView會給代理髮送一條消息,詢問代理究竟要縮放本身內部的哪個子控件(哪一塊內容)開發

當用戶在UIScrollView身上使用捏合手勢時,UIScrollView會調用代理的viewForZoomingInScrollView:方法,這個方法返回的控件就是須要進行縮放的控件。it

2、實現縮放功能io

1.代碼示例:class

複製代碼

#import "YYViewController.h"

@interface YYViewController () <UIScrollViewDelegate>
{
UIScrollView *_scrollview;
UIImageView *_imageview;
}
@end

@implementation YYViewController

- (void)viewDidLoad
{
[super viewDidLoad];

//1添加 UIScrollView
//設置 UIScrollView的位置與屏幕大小相同
_scrollview=[[UIScrollView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:_scrollview];

//2添加圖片
//有兩種方式
//(1)通常方式
// UIImageView *imageview=[[UIImageView alloc]init];
// UIImage *image=[UIImage imageNamed:@"minion"];
// imageview.image=image;
// imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);

//(2)使用構造方法
UIImage *image=[UIImage imageNamed:@"minion"];
_imageview=[[UIImageView alloc]initWithImage:image];
//調用initWithImage:方法,它建立出來的imageview的寬高和圖片的寬高同樣
[_scrollview addSubview:_imageview];

//設置UIScrollView的滾動範圍和圖片的真實尺寸一致
_scrollview.contentSize=image.size;


//設置實現縮放
//設置代理scrollview的代理對象
_scrollview.delegate=self;
//設置最大伸縮比例
_scrollview.maximumZoomScale=2.0;
//設置最小伸縮比例
_scrollview.minimumZoomScale=0.5;

}

//告訴scrollview要縮放的是哪一個子控件
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return _imageview;
}

@end

複製代碼

2.代碼說明

實現縮放功能的4個步驟

(1)爲scrollview設置代理(self)

(2)讓控制器遵照scrollview的代理協議

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

(4)設置縮放的範圍(最大和最小比例)

3.思路:

a.須要告訴scrollview要縮放的時哪個子控件,這裏爲scrollview內部的imageview控件

b.誰來告訴scrollview縮放哪個控件?代理

3、補充知識

兩種實例化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];

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

縮放完畢的時候調用 

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

正在縮放的時候調用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView

相關文章
相關標籤/搜索