UIScrollView实现图片放大、缩小

本文介绍如何使用UIScrollView实现图片的放大和缩小功能。包括UIScrollView的基本配置、UIImageView的添加及图片显示设置,以及UIScrollView代理方法的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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__);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值