一、縮放
1.簡(jiǎn)單說(shuō)明:
要想對(duì)某些內(nèi)容進(jìn)行手勢(shì)縮放,UIScrollView不僅能滾動(dòng)顯示大量?jī)?nèi)容,還能對(duì)其內(nèi)容進(jìn)行縮放處理。也就是說(shuō),要完成縮放功能的話,只需要將需要縮放的內(nèi)容添加到UIScrollView中
2.縮放原理
當(dāng)用戶在UIScrollView身上使用捏合手勢(shì)時(shí),UIScrollView會(huì)給代理發(fā)送一條消息,詢問(wèn)代理究竟要縮放自己內(nèi)部的哪一個(gè)子控件
3.當(dāng)用戶在UIScrollView身上使用捏合手勢(shì)時(shí),UIScrollView會(huì)調(diào)用代理的viewForZoomingInScrollView:方法,這個(gè)方法返回的控件就是需要進(jìn)行縮放的控件。
二 、實(shí)現(xiàn)縮放功能的代碼示范
#import "WWViewController.h"
@interface WWViewController () <UIScrollViewDelegate>
@property (nonatomic,weak)UIScrollView *scrollView;
@property (nonatomic,weak) UIImageView *imageview;
@end
@implementation WWViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//1添加 UIScrollView
//設(shè)置 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)使用構(gòu)造方法
UIImage *image=[UIImage imageNamed:@"minion"];
_imageview=[[UIImageView alloc]initWithImage:image];
//調(diào)用initWithImage:方法,它創(chuàng)建出來(lái)的imageview的寬高和圖片的寬高一樣
[_scrollview addSubview:_imageview];
//設(shè)置UIScrollView的滾動(dòng)范圍和圖片的真實(shí)尺寸一致
_scrollview.contentSize=image.size;
//設(shè)置實(shí)現(xiàn)縮放
//設(shè)置代理scrollview的代理對(duì)象
_scrollview.delegate=self;
//設(shè)置最大伸縮比例
_scrollview.maximumZoomScale=2.0;
//設(shè)置最小伸縮比例
_scrollview.minimumZoomScale=0.5;
}
//告訴scrollview要縮放的是哪個(gè)子控件
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return _imageview;
}
@end
2.代碼說(shuō)明
實(shí)現(xiàn)縮放功能的4個(gè)步驟
(1)為scrollview設(shè)置代理(self)
(2)讓控制器遵守scrollview的代理協(xié)議
(3)調(diào)用代理方法,返回需要實(shí)現(xiàn)縮放功能的子控件
(4)設(shè)置縮放的范圍(最大和最小比例)
3.思路:
a.需要告訴scrollview要縮放的時(shí)哪一個(gè)子控件,這里是scrollview內(nèi)部的imageview控件
b.誰(shuí)來(lái)告訴scrollview縮放哪一個(gè)控件?指定代理
三、補(bǔ)充知識(shí)
兩種實(shí)例化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"];
self.imageview=[[UIImageView alloc]initWithImage:image];
調(diào)用initWithImage:方法,它創(chuàng)建出來(lái)的imageview的寬高和圖片的寬高一樣
[self.scrollview addSubview:self.imageview];
四、跟縮放相關(guān)的其他代理方法
縮放完畢的時(shí)候調(diào)用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
正在縮放的時(shí)候調(diào)用 - (void)scrollViewDidZoom:(UIScrollView *)scrollView