博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uiscrollview 图片放大缩小
阅读量:6094 次
发布时间:2019-06-20

本文共 2653 字,大约阅读时间需要 8 分钟。

1、UIScrollView下图片的捏合放大和缩小,我们直接用scrollView自带的属性就可以了,这个没什么好说,我们直接贴代码:[plain] view plaincopy//控制器   theScroll=[[UIScrollView alloc] initWithFrame:frame];   theScroll.userInteractionEnabled=YES;   theScroll.maximumZoomScale=2.0;//最大倍率(默认倍率)   theScroll.minimumZoomScale=1.0;//最小倍率(默认倍率)   theScroll.decelerationRate=1.0;//减速倍率(默认倍率)   theScroll.delegate=self;   theScroll.autoresizingMask =UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleHeight;   [self addSubview:theScroll];      //图片   UIImage *theImageName=[UIImage imageNamed:imageName];   theImage=[[UIImageView alloc] initWithImage:theImageName];   theImage.userInteractionEnabled=YES;   theImage.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleHeight;   //图片默认作为2倍图处理   theImage.frame=CGRectMake(0, 0, theImageName.size.width/2, theImageName.size.height/2);   [theScroll addSubview:theImage];  另外,我们还要在scrollView的delegate里面设置一下:[plain] view plaincopy#pragma mark -UIScrollView delegate  -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView  {      return theImage;  }  2、scrollView对图片的双击放大和缩小这里我是通过对双击手势(UIGestureRecognizer)和scrollView的setZoomScale方法来实现放大和缩小。#创建双击手势[plain] view plaincopy//双击手势  UITapGestureRecognizer *doubelGesture=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleGesture:)];  doubelGesture.numberOfTapsRequired=2;  [theImage addGestureRecognizer:doubelGesture];  [doubelGesture release];  #另外,我们要记录当前的倍率,然后通过判断,是放大还是缩小。当然,还配合捏合的放大和缩小,所以,要在scrollView的delegate里面记录当前倍率,代码:[plain] view plaincopy-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale  {      currentScale=scale;  }  #双击手势的方法[plain] view plaincopy#pragma mark -DoubleGesture Action  -(void)doubleGesture:(UIGestureRecognizer *)sender  {            //当前倍数等于最大放大倍数      //双击默认为缩小到原图      if (currentScale==_maxScale) {          currentScale=minScale;          [theScroll setZoomScale:currentScale animated:YES];          return;      }      //当前等于最小放大倍数      //双击默认为放大到最大倍数      if (currentScale==minScale) {          currentScale=_maxScale;          [theScroll setZoomScale:currentScale animated:YES];          return;      }            CGFloat aveScale =minScale+(_maxScale-minScale)/2.0;//中间倍数            //当前倍数大于平均倍数      //双击默认为放大最大倍数      if (currentScale>=aveScale) {          currentScale=_maxScale;          [theScroll setZoomScale:currentScale animated:YES];          return;      }            //当前倍数小于平均倍数      //双击默认为放大到最小倍数      if (currentScale

 

转载于:https://www.cnblogs.com/zengyanzhi/p/3921888.html

你可能感兴趣的文章
H5禁止底部横向滚动条,使一个元素居中
查看>>
android 的安全问题
查看>>
skatebroads
查看>>
一些常用的命令和cheat sheet
查看>>
转----------数据库常见笔试面试题 - Hectorhua的专栏 - CSDN博客
查看>>
Android 界面设计 java.lang.NullPointerException 异常的解决方法
查看>>
解决ctrl+shift+F快捷键eclipse格式化与输入法简繁转换冲突问题
查看>>
kali在vbox上运行设置共享文件夹
查看>>
【观点】程序员的七大坏毛病
查看>>
一起谈.NET技术,Mono向Mac OS应用程序开发示好
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>
多线程条件
查看>>
Git [remote rejected] xxxx->xxxx <no such ref>修复了推送分支的错误
查看>>
Porter/Duff,图片加遮罩setColorFilter
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>