您的位置:首页 > 产品设计 > UI/UE

UIScrollView实现图片放大、缩小

2014-12-11 01:12 393 查看

UIScrollView实现图片放大、缩小

一、在storyboard中添加Scroll View或者用懒加载创建

UIScrollView

- (UIScrollView
*)scrollView

{

if (_scrollView
==
nil) {

_scrollView = [[UIScrollView
alloc]
initWithFrame:self.view.bounds];

//
设置代理

_scrollView.delegate
=
self;

//
设置最大/最小缩放比例

_scrollView.maximumZoomScale
=
2.0;

_scrollView.minimumZoomScale
=
0.2;

[self.view
addSubview:_scrollView];

}

return
_scrollView;

}

注意:
UIScrollView的frame大小和父窗口view的frame大小一致

二、把imageView懒加载添加到UIScrollView

- (UIImageView
*)imageView

{

if (_imageView
==
nil) {

_imageView = [[UIImageView
alloc]
init];

[self.scrollView
addSubview:_imageView];

}

return
_imageView;

}

三、设置图片
//
图像的setter

- (void)setImage:(UIImage
*)image

{

_image = image;

//
设置图像视图的内容

self.imageView.image
= image;

//
让图像视图根据图像自动调整大小

[self.imageView
sizeToFit];

//
告诉scrollView内部内容的实际大小

self.scrollView.contentSize
= image.size;

}

注意:
设置图像视图根据图像自动调整大小,因为UIImageView的frame没有设置。

[self.imageView sizeToFit];

告诉scrollView内部内容的实际大小

self.scrollView.contentSize =
image.size;

self.scrollView和_scrollView的区别。

四、设置图像
- (void)viewDidLoad

{

[super
viewDidLoad];

//
设置图像

self.image
= [UIImage
imageNamed:@"minion"];

}

五、实现UIScrollView的代理方法

#pragma mark - UIScrollView的代理方法

/**

1>
设置了代理

2>
指定了最大、最小的缩放比例

表示ScrollView是可以缩放的

代理方法的"返回值"实际上就是控制器告诉滚动视图,要缩放的是UIImageView

*/

//
告诉ScrollView要缩放的视图是谁,具体的缩放实现,是由ScrollView来完成的

// 1> scrollView要知道缩放谁

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

{

return
self.imageView;

}

// 2>
滚动视图即将开始缩放,通常不需要写

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

{

NSLog(@"%s", __func__);

}

// 3>
正在缩放,通常也不需要实现

- (void)scrollViewDidZoom:(UIScrollView
*)scrollView

{

// NSLog(@"%s", __func__);

NSLog(@"%@",
NSStringFromCGAffineTransform(self.imageView.transform));

}

// 4>
完成缩放,通常也不需要实现

- (void)scrollViewDidEndZooming:(UIScrollView
*)scrollView withView:(UIView
*)view atScale:(CGFloat)scale

{

NSLog(@"%s", __func__);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: