1、縮放post
1.簡單說明:spa
有些時候,咱們可能要對某些內容進行手勢縮放,以下圖所示3d
UIScrollView不只能滾動顯示大量內容,還能對其內容進行縮放處理。也就是說,要完成縮放功能的話,只須要將須要縮放的內容添加到UIScrollView中代理
2.縮放原理code
當用戶在UIScrollView身上使用捏合手勢時,UIScrollView會給代理髮送一條消息,詢問代理究竟要縮放本身內部的哪個子控件(哪一塊內容)對象
當用戶在UIScrollView身上使用捏合手勢時,UIScrollView會調用代理的viewForZoomingInScrollView:方法,這個方法返回的控件就是須要進行縮放的控件。blog
2、實現縮放功能圖片
1.代碼示例:it
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.代碼說明io
實現縮放功能的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