-有些时候我们可能要对某些内容进行手势缩放
-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
运行结果如下:
本文详细介绍了如何利用UIScrollView实现手势缩放功能,包括添加UIScrollView、配置UIImageView、设置代理及实现缩放逻辑等关键步骤。

被折叠的 条评论
为什么被折叠?



