iOS开发UI篇—UIScrollView控件实现图片缩放功能

简介:

一、缩放

1.简单说明:

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

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

2.缩放原理

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

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

二、实现缩放功能

1.代码示例:

复制代码
 1 #import "YYViewController.h"  2  3 @interface YYViewController () <UIScrollViewDelegate>
 4 {
 5 UIScrollView *_scrollview;
 6 UIImageView *_imageview;
 7 }
 8 @end  9 10 @implementation YYViewController
11 12 - (void)viewDidLoad
13 {
14  [super viewDidLoad];
15 16 //1添加 UIScrollView
17 //设置 UIScrollView的位置与屏幕大小相同 18 _scrollview=[[UIScrollView alloc]initWithFrame:self.view.bounds];
19  [self.view addSubview:_scrollview];
20 21 //2添加图片
22 //有两种方式
23 //(1)一般方式
24 // UIImageView *imageview=[[UIImageView alloc]init];
25 // UIImage *image=[UIImage imageNamed:@"minion"];
26 // imageview.image=image;
27 // imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);
28 29 //(2)使用构造方法 30 UIImage *image=[UIImage imageNamed:@"minion"];
31 _imageview=[[UIImageView alloc]initWithImage:image];
32 //调用initWithImage:方法,它创建出来的imageview的宽高和图片的宽高一样 33  [_scrollview addSubview:_imageview];
34 35 //设置UIScrollView的滚动范围和图片的真实尺寸一致 36 _scrollview.contentSize=image.size;
37 38 39 //设置实现缩放
40 //设置代理scrollview的代理对象 41 _scrollview.delegate=self;
42 //设置最大伸缩比例 43 _scrollview.maximumZoomScale=2.0;
44 //设置最小伸缩比例 45 _scrollview.minimumZoomScale=0.5;
46 47 }
48 49 //告诉scrollview要缩放的是哪个子控件 50 -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
51 {
52 return _imageview;
53 }
54 55 @end
复制代码

2.代码说明

实现缩放功能的4个步骤

(1)为scrollview设置代理(self)

(2)让控制器遵守scrollview的代理协议

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

(4)设置缩放的范围(最大和最小比例)

3.思路:

a.需要告诉scrollview要缩放的时哪一个子控件,这里为scrollview内部的imageview控件

b.谁来告诉scrollview缩放哪一个控件?代理

三、补充知识

两种实例化UIImageView的方法:

第一种:

UIImageView *imageview=[[UIImageView alloc]init];

UIImage *image=[UIImage imageNamed:@"minion"];

imageview.image=image;

imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);

第二种:

UIImage *image=[UIImage imageNamed:@"minion"];

_imageview=[[UIImageViewalloc]initWithImage:image];

调用initWithImage:方法,它创建出来的imageview的宽高和图片的宽高一样

[_scrollviewaddSubview:_imageview];

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

缩放完毕的时候调用

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

正在缩放的时候调用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView

目录
打赏
0
0
0
0
4
分享
相关文章
|
4月前
|
「Mac畅玩鸿蒙与硬件48」UI互动应用篇25 - 简易购物车功能实现
本篇教程将带你实现一个简易购物车功能。通过使用接口定义商品结构,我们将创建一个动态购物车,支持商品的添加、移除以及实时总价计算。
191 69
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
3992 2
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
310 10
|
5月前
「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
本篇将带领你实现一个倒计时和提醒功能的应用,用户可以设置倒计时时间并开始计时。当倒计时结束时,应用会显示提醒。该项目涉及时间控制、状态管理和用户交互,是学习鸿蒙应用开发的绝佳实践项目。
203 2
「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
深入解析iOS 14隐私保护功能:用户数据安全的新里程碑
随着数字时代的到来,个人隐私保护成为全球关注的焦点。苹果公司在最新的iOS 14系统中引入了一系列创新的隐私保护功能,旨在为用户提供更透明的数据使用信息和更强的控制权。本文将深入探讨iOS 14中的几项关键隐私功能,包括App跟踪透明性、简化的隐私设置以及增强的系统安全性,分析它们如何共同作用以提升用户的隐私保护水平。
284 3
深入探索iOS 14的隐私保护功能
本文将深入探讨iOS 14操作系统中的隐私保护功能,包括新的隐私指示器、应用程序跟踪透明度以及增强的隐私设置。我们将分析这些功能如何提高用户对个人数据的控制权,并讨论它们对应用开发者和广告行业的影响。
128 1
推荐3款开源、美观且免费的WinForm UI控件库
推荐3款开源、美观且免费的WinForm UI控件库
1164 6
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
157 3
基于Material Design风格开源、免费的WinForms UI控件库
基于Material Design风格开源、免费的WinForms UI控件库!
136 0
分享3款开源、免费的Avalonia UI控件库
分享3款开源、免费的Avalonia UI控件库
709 0

热门文章

最新文章

下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等