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

时间: 2024-12-21 12:53:25

UIScrollView 手势缩放的相关文章

UIScrollView 常见属性 手势缩放 分页效果

一. 基本使用 作用 UIScrollView可以用于显示多于一个屏幕的内容,超出屏幕范围的内容可以通过滑动进行查看 常见属性  ? CGSize contentSize :设置UIScrollView的滚动范围 ? CGPoint contentOffset :UIScrollView当前滚动的位置 ? UIEdgeInsets contentInset :这个属性可以在四周增加滚动范围 其他属性  ? BOOL bounces 是否有弹簧效果 ? BOOL scrollEnabled 是否能

UIScrollView的缩放原理

有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScrollView中 当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容) 当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的viewForZoomingInScroll

UIScrollView内容缩放

•有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理 也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScrollView中 1.设置UIScrollView的id<UISCrollViewDelegate> delegate代理对象 2.设置minimumZoomScale :缩小的最小比例 3.设置maximumZoomScale :放大的最大比例 4.让代理对象实现下面的方法,返回需要缩放的视图控

android项目 之 记事本(14) ----- 手势缩放与拖拽图片

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 上节实现了查看图片及录音的功能,其中查看图片,可以调用系统的图库来查看图片,也可以自定义Activity来查看图片,今天就在上节的基础上,实现手势缩放与拖拽图片. 想必大家都用过系统的图库,浏览图片时,可以通过手势放大或缩小图片,旋转图片,拖拽图片等功能,我们也为自已定义的查看图片的Activity增加手势缩放与拖拽图片的功能,效果如下图: 上面四幅图中,演示了通过手势(多点触

支持手势缩放的ImageView

前两篇文章讲解了Android的触控机制和手势操作,讲到多点触控时我们举了一个简单的手势缩放图片的例子,但是功能很有限.本篇我们通过解析一个国外大牛Mike Ortiz写的自定义TouchImageView的源码,来更加深入了解安卓触控和手势操作. TouchImageView继承自ImageView具有ImageView的所有功能:除此之外,还有缩放.拖拽.双击放大等功能,支持viewpager和scaletype,并伴有动画效果. sharedConstructing private voi

Android仿微信朋友圈图片浏览器(支持图片手势缩放,拖动)

※效果 ※使用到的开源库 PhotoView 图片缩放:支持双击缩放,手指捏拉缩放 https://github.com/chrisbanes/PhotoView Universalimageloader 图片下载缓存库 https://github.com/nostra13/Android-Universal-Image-Loader ViewPagerIndicator 分页指示器 https://github.com/JakeWharton/Android-ViewPagerIndicat

Android手势缩放图片以及图片黏贴在手指随手势移动

一个Android手势缩放图片的工具类:同时,此类还实现另外一个功能:当手指按在触屏上移动时候,图片"黏贴"在手指上随手指移动而整体移动. 具体使用方法可以是这样:先new一个此类的实例,然后在ImageView的方法setOnTouchListener(new ImageViewOnMultiTouchListener()); 例如: ImageViewOnMultiTouchListener listener=new ImageViewOnMultiTouchListener();

Android ImageView手势缩放完整的实现

已经有很多开源的缩放控件了,实际做项目没有必要重复造轮子,但对于学习来说自己亲自实现一个缩放的ImageView是大有益处的.所以这里分享一下自己学习的心得. 1.创建一个类继承ImageView. public class GestureImageView extends ImageView { public GestureImageView(Context context) { super(context); } public GestureImageView(Context context

js实现移动端图片预览:手势缩放, 手势拖动,双击放大...

.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > .katex-html { display: block; } .katex-display > .katex > .katex-html > .tag { position: absolute; right: 0px; } .katex { font-style: normal; font