UIScrollView 縮放介紹

一、縮放

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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容