iPhone开发之UIScrollView滚动组件的使用(六)通过代理实现手势缩放——(拖线实现)
来源:互联网 发布:sql identity_insert 编辑:程序博客网 时间:2024/05/18 00:11
-有些时候我们可能要对某些内容进行手势缩放
-UIScrollView不仅能滚动显示大量的内容,还能对其内容进行处理
-也就是说,要完成缩放功能,只需要将需要缩放的内容添加到UIScrollView。
1、大概步骤如下:
(1)拖拽一个UIScrollView
(2)向UIscrollView中添加内容(这里的内容就是指要进行缩放的内容(控件))
(3)通过代理监听缩放事件,在缩放事件中返回UIScrollView的某个子控件(这个子控件就是告诉UIScrollView对这个控件进行缩放)
(4)设置缩放比:最大能放大多少倍,最小能缩放百分之多少。
当用户在UIScrollView身上使用捏合手势时,UIscrollView会发送给代理一条消息,询问代理究竟要缩放自己内部的哪一个控件(哪一块内)具体如下图:
3、实现缩放的具体步骤如下:
(一)添加UIScrollView,设置UIscrollView的宽和高与控制器大小一致。
(二)向UIscrollView中添加子控件UIImageView,设置图片,设置UIImageView的大小与图片的大小一致。
(三)设置UIscrollView的代理为当前控制器
(四)设置当前控制器遵守UIscrollViewDelegate代理协议
(五)在控制器中实现代理方法
-(UIView *)viewFormZoomingInScrollVIew:方法返回一个要缩放的子控件。
(六)在viewDidLoad中设置缩放比例
—— self.scrollView.maximumZoomScale = 2.0;
——self.scrollView.minimumZoomScale=0.4;
注意:UIscrollView一次只能缩放一个子控件,到底要缩放哪个子控件,UIScrollView要问代理,由代理方法决定,也就是说由用户决定(问代理的:viewFormZoomingForScrollView这个方法,该方法返回的控件就是scrollView要缩放的控件)
4、UIScrollViewDelegate协议中用于UIScrollView组件内部内容缩放的方法如下:
(1)- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView; 这个方法是实现缩放必不可少的方法。
(2)- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2);
这个方法表示正在手势缩放
(1)- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;
这个方法在手势缩放完毕时会被调用。
注意:第一个方法在被执行前就会被调用,返回要进行缩放的子控件。告诉UIScrollView要缩放的是哪个控件。
5、当一个UIScrollView中有多个控件时,但是无法对每个每个控件都进行进行缩放,一个UIscrollView只能选择一个控件进行缩放。有以下问题需要注意:
-UIScrollView不仅能滚动显示大量的内容,还能对其内容进行处理
-也就是说,要完成缩放功能,只需要将需要缩放的内容添加到UIScrollView。
1、大概步骤如下:
(1)拖拽一个UIScrollView
(2)向UIscrollView中添加内容(这里的内容就是指要进行缩放的内容(控件))
(3)通过代理监听缩放事件,在缩放事件中返回UIScrollView的某个子控件(这个子控件就是告诉UIScrollView对这个控件进行缩放)
(4)设置缩放比:最大能放大多少倍,最小能缩放百分之多少。
注意:UIScrollView一次只能对一个控件进行缩放,仅仅一个。
代理的工作过程如下图所示:
当用户在UIScrollView身上使用捏合手势时,UIscrollView会发送给代理一条消息,询问代理究竟要缩放自己内部的哪一个控件(哪一块内)具体如下图:
3、实现缩放的具体步骤如下:
(一)添加UIScrollView,设置UIscrollView的宽和高与控制器大小一致。
(二)向UIscrollView中添加子控件UIImageView,设置图片,设置UIImageView的大小与图片的大小一致。
(三)设置UIscrollView的代理为当前控制器
(四)设置当前控制器遵守UIscrollViewDelegate代理协议
(五)在控制器中实现代理方法
-(UIView *)viewFormZoomingInScrollVIew:方法返回一个要缩放的子控件。
(六)在viewDidLoad中设置缩放比例
—— self.scrollView.maximumZoomScale = 2.0;
——self.scrollView.minimumZoomScale=0.4;
注意:UIscrollView一次只能缩放一个子控件,到底要缩放哪个子控件,UIScrollView要问代理,由代理方法决定,也就是说由用户决定(问代理的:viewFormZoomingForScrollView这个方法,该方法返回的控件就是scrollView要缩放的控件)
4、UIScrollViewDelegate协议中用于UIScrollView组件内部内容缩放的方法如下:
(1)- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView; 这个方法是实现缩放必不可少的方法。
(2)- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2);
这个方法表示正在手势缩放
(1)- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;
这个方法在手势缩放完毕时会被调用。
注意:第一个方法在被执行前就会被调用,返回要进行缩放的子控件。告诉UIScrollView要缩放的是哪个控件。
5、当一个UIScrollView中有多个控件时,但是无法对每个每个控件都进行进行缩放,一个UIscrollView只能选择一个控件进行缩放。有以下问题需要注意:
—当一个控制器的view中有多个UIScrollView滚动控件时,就需要对每个UIScrollView设置不同的Tag值,代理中的viewForZoomingInScrollView方法就会根据传进参数的Tag值进行判断,分别为不同的UIScrollView控件返回一个不同的内容控件。
—在模拟器上进行手势缩放时,按住option键或Alt键,用鼠标移动进行缩放
过程步骤如下:
第一步:拖进图片资源并查看分辨率即大小
第二步:拖进一个UIScrollView组件,再拖进UIScrollView组件一个UIImageView组件并进行设置
第三步:关闭自动布局:
第四步:将组件拖线为控制器类添加属性
第五步:为UIScrollView组件设置代理为当前控制器(若为手动的话,就要添加协议并用self.scrollView.delegate=self)
第六步:进入协议复制控制手势缩放的方法到控制器.m文件进行编辑实现,
编辑控制器的.m文件如下:
//// ViewController.m// 拖线实现手势缩放//// Created by apple on 15/8/28.// Copyright (c) 2015年 LiuXun. All rights reserved.//#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;@property (weak, nonatomic) IBOutlet UIImageView *ImageView;@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; self.scrollView.contentSize=self.ImageView.frame.size;self.scrollView.maximumZoomScale = 2.0; self.scrollView.minimumZoomScale = 0.4;}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ NSLog(@"=======viewForZooming======"); return self.ImageView;}- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2){ NSLog(@"scrollViewBeginZooming..........");}- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{ NSLog(@"scrollVIewDidEndZooming.........");}@end运行结果如下:
0 0
- iPhone开发之UIScrollView滚动组件的使用(六)通过代理实现手势缩放——(拖线实现)
- iPhone开发之UIScrollView滚动组件的使用(五) 通过代理监听滚动事件
- iPhone开发之UIScrollView滚动组件的使用(一) 拖线实现——大图的移动展示
- iPhone开发之UIScrollView滚动组件的使用(四) 拖线实现 喜马拉雅案例
- iPhone开发之UIScrollView滚动组件的使用(二) 拖线实现按钮控制大图移动利用contentOffset属性
- iPhone开发之UIScrollView滚动组件的使用——纯代码实现图形的横向与纵向滚动
- iPhone开发之UIScrollView滚动组件的使用(七)利用NSTimer计时器和UIPageControl组件代码实现图片轮播器
- iPhone开发之UIScrollView滚动组件的使用(三) 拖线实现按钮控制大图移动之contentInsets增加内容边距
- UIScrollView的代理——实现图片缩放
- ipad实现ScrollView通过手势滚动和缩放的Image
- ipad实现ScrollView通过手势滚动和缩放的Image
- iphone开发之通过代理模式实现自定义控件——代码示例图片库的处理
- 【iOS开发-54】案例学习:通过UIScrollView的缩放图片功能练习代理模式的具体实现
- UIScrollView实现滚动及缩放
- iphone开发之表格组件UITableView的使用(六)通过加载plist文件展示汽车品牌并添加索引查找
- 29-scrollView代理的使用(包括通过代理实现缩放)
- (素材源码)猫猫学IOS(九)UI之UIScrollView代理触摸实现_图片缩放
- 猫猫学IOS(九)UI之UIScrollView代理触摸实现_图片缩放
- 矩阵基本操作(加减乘、求逆、转置)
- 【峰回路转】Excel技巧百例 14.字符串截取函数的经典组合示例
- UIBarButtonItem的分类 (快速返回一个显示图片的UIBarButtonItem)
- web数据挖掘
- 通过应用程序使用字符设备驱动
- iPhone开发之UIScrollView滚动组件的使用(六)通过代理实现手势缩放——(拖线实现)
- 【EXT-BSGS算法求离散对数】POJ Clever Y 3243
- 【Lua】在C#中通过lua调用C#中的类方法
- spring MVC jsp页面EL表达式无效
- 互联网行业在挖些什么?
- Linux内核同步机制之(四):spin lock
- Why coding like This ------ 递归以及枚举中的递归
- JavaScript内核笔记04-数组
- 数据结构:循环队列(队列的顺序表示)