iOS开发-ScrollView图片缩放
智能手机一般常用常用的操作触摸,滑动,缩放,感觉对于生活而言就是手机在手,天下我有,看网页的时候字体太小,缩放一下,看美女的看的不爽,缩放一下,地图看的不清,缩放一下。缩放是一个很常见的操作,不论是从生活还是写程序而言,都是一个绕不开的东西,做了一个Demo,缩放一下美女,熟悉ScrollView中的常见属性的设置,开始正题吧。
常见属性
先看图,要实现的效果:

UIImage *image=[UIImage imageNamed:@"girl0.jpg"];
_imageView=[[UIImageView alloc] initWithImage:image];
[_scrollView addSubview:_imageView];
//设置ScrollView和image是一样的大小
[_scrollView setContentSize:image.size];
可以设置ScrollView的初始位置和大小:
//CGRect枚举一个矩形,然后设置imageView的位置
[_imageView setFrame:CGRectMake(0, 0, 100, 100)];
设置边界区域:
//设置边界区域
[_scrollView setContentInset:UIEdgeInsetsMake(20, 20.0, 20.0, 20.0)];
上下左右移动调用哪个同意IBAction,通过Tag区分(之前文章有介绍),移动就是控制坐标,IOS中左上角是0,X轴向右自增,Y轴向下自增:
UIButton *button=(UIButton *)sender;
CGPoint currentPoint=self.scrollView.contentOffset;
switch (button.tag) {
case 0:
currentPoint.y-=50;
break;
case 1:
currentPoint.y+=50;
break;
case 2:
currentPoint.x-=50;
break;
case 3:
currentPoint.x+=50;
break;
default:
break;
}
//横轴的边界值
if (currentPoint.x<0) {
currentPoint.x=0;
}else if (currentPoint.x>_scrollView.contentSize.width-_scrollView.bounds.size.width){
currentPoint.x=_scrollView.contentSize.width-_scrollView.bounds.size.width;
} //纵轴的边界值
if (currentPoint.y<0) {
currentPoint.y=0;
}else if (currentPoint.y>_scrollView.contentSize.height-_scrollView.bounds.size.height){
currentPoint.y=_scrollView.contentSize.height-_scrollView.bounds.size.height;
} //动画效果
[self.scrollView setContentOffset:currentPoint animated:YES];
动画效果可以通过block设置:
[UIView animateWithDuration:0.3f animations:
^{
[self.scrollView setContentOffset:currentPoint];
}];
缩放
缩放之前需要涉及到一个东西就是控制器需要遵守UIScrollViewDelegate协议,然后实现协议中方法,应用场景中如果我们在对ScrollView中图片进行缩放,将消息通知给UIScrollViewDelegate,最终将事件实现委托给是实现方法:
//
// ViewController.h
// ScrollView
// http://www.cnblogs.com/xiaofeixiang
// Created by keso on 15/1/20.
// Copyright (c) 2015年 keso. All rights reserved.
// #import <UIKit/UIKit.h> @interface ViewController : UIViewController <UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @end
设置一下最大和最小缩放比例,设置委托:
[_scrollView setMinimumZoomScale:0.3];
[_scrollView setMaximumZoomScale:1.8];
[_scrollView setDelegate:self];
实现一个返回的图像,如果不是实现,没有效果:
//缩放过程中的图像
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return _imageView;
}
有的时候如果可能有业务需要会需要一个缩放结束的方法:
////缩放结束
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
NSLog(@"缩放比例:%f",scale);
}
还有一个不常用的,缩放中的方法:
//缩放中
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"缩放中的调用~");
}
最终效果:

iOS开发-ScrollView图片缩放的更多相关文章
- iOS开发基础-图片切换(4)之懒加载
延续:iOS开发基础-图片切换(3),对(3)里面的代码用懒加载进行改善. 一.懒加载基本内容 懒加载(延迟加载):即在需要的时候才加载,修改属性的 getter 方法. 注意:懒加载时一定要先判断该 ...
- iOS开发基础-图片切换(3)之属性列表
延续:iOS开发基础-图片切换(2),对(2)里面的代码用属性列表plist进行改善. 新建 Property List 命名为 Data 获得一个后缀为 .plist 的文件. 按如图修改刚创建的文 ...
- iOS开发基础-图片切换(2)之懒加载
延续:iOS开发基础-图片切换(1),对(1)里面的代码进行改善. 在 ViewController 类中添加新的数组属性: @property (nonatomic, strong) NSArra ...
- Android安卓开发中图片缩放讲解
安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...
- iOS开发中图片方向的获取与更改
iOS开发中 再用到照片的时候 或多或少遇到过这样的问题 就是我想用的照片有横着拍的有竖着排的 所以导致我选取图片后的效果也横七竖八的 显示效果不好 比如: 图中红圈选中的图片选取的是横着拍 ...
- iOS开发基础-图片切换(1)
一.程序功能分析 1)点击左右箭头切换图片.序号.描述: 2)如果是首张图片,左边箭头失效: 3)如果是最后一张图片,右边箭头失效. 二.程序实现 定义确定图片位置.大小的常量: //ViewCont ...
- iOS 开发--开源图片处理圆角
概述 开源项目名称:HYBImageCliped 当前版本:2.0.0 项目用途:可给任意继承UIView的控件添加任意多个圆角.可根据颜色生成图片且可带任意个圆角.给UIButton设置不同状态下的 ...
- 李洪强iOS开发之图片拉伸技巧
纵观移动市场,一款移动app,要想长期在移动市场立足,最起码要包含以下几个要素:实用的功能.极强的用户体验.华丽简洁的外观.华丽外观的背后,少不了美工的辛苦设计,但如果开发人员不懂得怎么合理展示这些设 ...
- 【ios开发】图片拉伸
最近在做一个项目 其中要自己定制一个View 如图: 但是美工给了我的图片尺寸却是不一样的. 分别是599*80 26*61 于是就成了这样的效果. 很明显的发现取消四周不对劲. 于是我就去找美工姐 ...
随机推荐
- 【记录】url 中出现特殊字符该怎么办
url中出现特殊字符+ URL 中+号表示空格 %2B 空格 URL中的空格可以用+号或者编码 %20/ 分隔目录和子目录 %2F ? 分隔实际的URL和参数 %3F % 指定特殊字符 %25 # 表 ...
- eNSP仿真学习和VLAN配置
路由&交换机基本命令 sys #切换到系统视图(修改配置),Ctrl+Z 返回用户视图 sysname SW1 #设备重命名为SW1 int g0/0/1 #进入接口视图 VLAN配置 首先连 ...
- [代码审计]某开源商城前台getshell
0x00 前言 这套系统搞了有点久了,漏洞是发现了,但一直卡在某个地方迟迟没拿下来. 下面就分享一下自己审这套系统的整个过程. 0x01 系统简介 略 0x02 审计入口 看到inc\functi ...
- golang实现base64编解码
golang中base64的编码和解码可以用内置库encoding/base64 package main import ( "encoding/base64" "fmt ...
- [ 转载 ] js十大排序算法:冒泡排序
js十大排序算法:冒泡排序 http://www.cnblogs.com/beli/p/6297741.html
- django中日志配置
# ======日志配置====== # 错误优先级:NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL # Djang ...
- noi 2727:仙岛求药
2727:仙岛求药 总时间限制: 1000ms 内存限制: 65536kB 描述 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难 ...
- C#高级编程9-第3章 对象与类型
类与结构 类和结构都是对象的模板 类定义了处理和访问数据的方法,通过类的实例化进行逻辑处理 类与结构的区别是类是引用类型,存储在托管堆上:结构是值类型,存储在栈上的: 类使用class进行修饰,结构使 ...
- MySQL的转义符 ` 作用
` 是 MySQL 的转义符,避免和 mysql 的本身的关键字冲突,只要你不在列名.表名中使用 mysql 的保留字或中文,就不需要转义. 所有的数据库都有类似的设置,不过mysql用的是`而已.通 ...
- 回顾下$.ajax()方法参数
1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...