利用UIScrollView实现图片的缩放

来源:互联网 发布:金粉世家知乎 编辑:程序博客网 时间:2024/05/21 09:58

有些时候,我们可能要对某些内容进行手势缩放,如下图所示



UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理,也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScrollView中。

UIScrollView的缩放原理

当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容)



当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的viewForZoomingInScrollView:方法,这个方法返回的控件就是需要进行缩放的控件。

缩放实现步骤

1,设置UIScrollViewid<UISCrollViewDelegate> delegate代理对象

2,设置minimumZoomScale:缩小的最小比例

3,设置maximumZoomScale:放大的最大比例

4,让代理对象实现下面的方法,返回需要缩放的视图控件

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;


跟缩放相关的其他代理方法

缩放完毕的时候调用 

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


正在缩放的时候调用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView


一下是一个代码例子:

////  ViewController.m//  03-图片缩放////  Created by aaron on 14/11/26.//  Copyright (c) 2014年 aaron. All rights reserved.//#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;@property (weak, nonatomic) IBOutlet UIImageView *minionView;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.        //设置scrollView的contensize    self.scrollView.contentSize = self.minionView.frame.size;        self.scrollView.contentOffset = CGPointMake(0, -30);        self.scrollView.contentInset = UIEdgeInsetsMake(30, 10, 10, 10);        // 设置代理    self.scrollView.delegate = self;        self.scrollView.minimumZoomScale = 0.1;    self.scrollView.maximumZoomScale = 3.0;    }- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{    NSLog(@"-----开始拖动-------");}- (void)scrollViewDidScroll:(UIScrollView *)scrollView{//    NSLog(@"----正在拖动----");//    NSLog(@"%@",NSStringFromCGPoint(self.scrollView.contentOffset));}- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{    NSLog(@"-----停止拖动-----");}- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{    return self.minionView;}- (void)scrollViewDidZoom:(UIScrollView *)scrollView{    NSLog(@"%@",NSStringFromCGRect(self.minionView.frame));}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end






0 0
原创粉丝点击