iOS开发基础-UIScrollView实现图片缩放

  当用户在 UIScrollView 上使用捏合手势时, UIScrollView 会给 UIScrollViewDelegate 协议发送一条消息,并调用代理的 viewForZoomingInScrollView: 方法,该方法返回的控件就是需要进行缩放的控件。

  实现缩放功能的步骤:

1)让控制器遵守 UIScrollView 的代理协议 UIScrollViewDelegate ;

2)为 UIScrollView 设置代理, _scrollView.delegate = self; ;

3)调用代理方法 viewForZoomingInScrollView: ,返回需要实现缩放功能的子控件;

4)设置缩放的范围, _scrollView.maximumZoomScale、_scrollView.minimumZoomScale 。

实例

  新建一个Single View Application,让 ViewController 类遵守 UIScrollViewDelegate 协议,并在类扩展中添加 UIScrollView 和 UIImageView 属性,如下:

 //ViewController.m
@interface ViewController ()
{
UIScrollView *_scrollView;
UIImageView *_imageView;
}

  重载 viewDidLoad 方法如下:

 - (void)viewDidLoad {
[super viewDidLoad];
//添加UIScrollView
_scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:_scrollView]; //添加图片
UIImage *image = [UIImage imageNamed:@"beauty4.jpg"];
//initWithImage:方法创建的_imageView的宽高和图片一样
_imageView = [[UIImageView alloc] initWithImage:image];
[_scrollView addSubview:_imageView];
_scrollView.contentSize = image.size; //设置代理对象
_scrollView.delegate = self;
//设置最大缩小放大比例
_scrollView.maximumZoomScale = 2.0;
_scrollView.minimumZoomScale = 0.5;
}

  实现 viewForZoomingInScrollView: 方法,告诉 _scrollView  _imageView 是需要缩放的子控件:

 //ViewController.m
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
NSLog(@"实现图片的缩放");
return _imageView;
}

补充

  上述代码下划线部分,实例化 UIImageView 的方法可替换为:

 _imageView = [[UIImageView alloc] init];
UIImage *image = [UIImage imageNamed:@"beauty4.jpg"];
_imageView.image = image;
_imageView.frame = CGRectMake(, , image.size.width, image.size.height);

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

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view  缩放完毕的时候调用。

- (void)scrollViewDidZoom:(UIScrollView *)scrollView  正在缩放的时候调用。

  在原代码之中添加如下代码:

 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
NSLog(@"%s", __FUNCTION__);
} - (void)scrollViewDidZoom:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
}

  在真机上调试,使用捏合手势放大图片,输出如下:

 -- ::07.780 WJQScrollViewDemo[:] -[ViewController viewForZoomingInScrollView:]
-- ::07.781 WJQScrollViewDemo[:] -[ViewController scrollViewWillBeginZooming:withView:]
-- ::07.798 WJQScrollViewDemo[:] -[ViewController scrollViewDidZoom:]

参考博客:iOS开发UI篇—UIScrollView控件实现图片缩放功能

代码下载:http://vdisk.weibo.com/s/DiY98QyXCNtD9

上一篇:Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植


下一篇:vmware异常关闭导致xshell不能连接及windows系统ping不通