首页 > 代码库 > UIScrollView实现图片放大、缩小
UIScrollView实现图片放大、缩小
UIScrollView实现图片放大、缩小
一、在storyboard中添加Scroll View或者用懒加载创建UIScrollView
- (UIScrollView*)scrollView
{
if (_scrollView== nil) {
_scrollView = [[UIScrollViewalloc]initWithFrame:self.view.bounds];
// 设置代理
_scrollView.delegate= self;
// 设置最大/最小缩放比例
_scrollView.maximumZoomScale= 2.0;
_scrollView.minimumZoomScale= 0.2;
[self.viewaddSubview:_scrollView];
}
return _scrollView;
}
// 让图像视图根据图像自动调整大小
[self.imageViewsizeToFit];
// 告诉scrollView内部内容的实际大小
self.scrollView.contentSize= image.size;
}
{
if (_scrollView== nil) {
_scrollView = [[UIScrollViewalloc]initWithFrame:self.view.bounds];
// 设置代理
_scrollView.delegate= self;
// 设置最大/最小缩放比例
_scrollView.maximumZoomScale= 2.0;
_scrollView.minimumZoomScale= 0.2;
[self.viewaddSubview:_scrollView];
}
return _scrollView;
}
注意:
UIScrollView的frame大小和父窗口view的frame大小一致
二、把imageView懒加载添加到UIScrollView
- (UIImageView*)imageView
{
if (_imageView== nil) {
_imageView = [[UIImageViewalloc]init];
[self.scrollViewaddSubview:_imageView];
}
return _imageView;
}
{
if (_imageView== nil) {
_imageView = [[UIImageViewalloc]init];
[self.scrollViewaddSubview:_imageView];
}
return _imageView;
}
三、设置图片
//图像的setter
- (void)setImage:(UIImage*)image
{
_image = image;
// 设置图像视图的内容
self.imageView.image= image;
- (void)setImage:(UIImage*)image
{
_image = image;
// 设置图像视图的内容
self.imageView.image= image;
// 让图像视图根据图像自动调整大小
[self.imageViewsizeToFit];
// 告诉scrollView内部内容的实际大小
self.scrollView.contentSize= image.size;
}
注意:
设置图像视图根据图像自动调整大小,因为UIImageView的frame没有设置。
[self.imageView sizeToFit];
[self.imageView sizeToFit];
告诉scrollView内部内容的实际大小
self.scrollView.contentSize = image.size;
self.scrollView.contentSize = image.size;
self.scrollView和_scrollView的区别。
四、设置图像
- (void)viewDidLoad
{
[superviewDidLoad];
// 设置图像
self.image= [UIImageimageNamed:@"minion"];
}
{
[superviewDidLoad];
// 设置图像
self.image= [UIImageimageNamed:@"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__);
}
/**
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__);
}
UIScrollView实现图片放大、缩小
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。