智能手机一般常用常用的操作触摸,滑动,缩放,感觉对于生活而言就是手机在手,天下我有,看网页的时候字体太小,缩放一下,看美女的看的不爽,缩放一下,地图看的不清,缩放一下。缩放是一个很常见的操作,不论是从生活还是写程序而言,都是一个绕不开的东西,做了一个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图片缩放的更多相关文章

  1. iOS开发基础-图片切换(4)之懒加载

    延续:iOS开发基础-图片切换(3),对(3)里面的代码用懒加载进行改善. 一.懒加载基本内容 懒加载(延迟加载):即在需要的时候才加载,修改属性的 getter 方法. 注意:懒加载时一定要先判断该 ...

  2. iOS开发基础-图片切换(3)之属性列表

    延续:iOS开发基础-图片切换(2),对(2)里面的代码用属性列表plist进行改善. 新建 Property List 命名为 Data 获得一个后缀为 .plist 的文件. 按如图修改刚创建的文 ...

  3. iOS开发基础-图片切换(2)之懒加载

    延续:iOS开发基础-图片切换(1),对(1)里面的代码进行改善. 在 ViewController 类中添加新的数组属性:  @property (nonatomic, strong) NSArra ...

  4. Android安卓开发中图片缩放讲解

    安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...

  5. iOS开发中图片方向的获取与更改

    iOS开发中 再用到照片的时候  或多或少遇到过这样的问题  就是我想用的照片有横着拍的有竖着排的  所以导致我选取图片后的效果也横七竖八的   显示效果不好 比如: 图中红圈选中的图片选取的是横着拍 ...

  6. iOS开发基础-图片切换(1)

    一.程序功能分析 1)点击左右箭头切换图片.序号.描述: 2)如果是首张图片,左边箭头失效: 3)如果是最后一张图片,右边箭头失效. 二.程序实现 定义确定图片位置.大小的常量: //ViewCont ...

  7. iOS 开发--开源图片处理圆角

    概述 开源项目名称:HYBImageCliped 当前版本:2.0.0 项目用途:可给任意继承UIView的控件添加任意多个圆角.可根据颜色生成图片且可带任意个圆角.给UIButton设置不同状态下的 ...

  8. 李洪强iOS开发之图片拉伸技巧

    纵观移动市场,一款移动app,要想长期在移动市场立足,最起码要包含以下几个要素:实用的功能.极强的用户体验.华丽简洁的外观.华丽外观的背后,少不了美工的辛苦设计,但如果开发人员不懂得怎么合理展示这些设 ...

  9. 【ios开发】图片拉伸

    最近在做一个项目 其中要自己定制一个View 如图: 但是美工给了我的图片尺寸却是不一样的. 分别是599*80  26*61 于是就成了这样的效果. 很明显的发现取消四周不对劲. 于是我就去找美工姐 ...

随机推荐

  1. shell rename directory

    mv can do two jobs. It can move files or directories It can rename files or directories To just rena ...

  2. 回顾2014 Java发生的5件大事

    回顾2014 Java发生的5件大事 1.2月1日:RedMonk分析师确认并宣布Java是最受欢迎和多样化的语言! 2014年,Java生态圈伴随着引擎的轰鸣起步,随着FOSDEM年会的Free J ...

  3. Swift2.0语言教程之闭包

    Swift2.0语言教程之闭包 Swift2.0语言闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用.Swift中的闭包与C和Objective-C中的代码块(blocks)以及其他一些编程语 ...

  4. int类型的整数转换成汉字

    int类型的整数转换成汉字 一.源代码:IntegerNumberToChinese.java package cn.com.zfc.example; import java.util.Scanner ...

  5. 【取对数】【哈希】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem J. Bobby Tables

    题意:给你一个大整数X的素因子分解形式,每个因子不超过m.问你能否找到两个数n,k,k<=n<=m,使得C(n,k)=X. 不妨取对数,把乘法转换成加法.枚举n,然后去找最大的k(< ...

  6. Linux下gcc与g++用法以及编写makefile

    1.         gcc与g++编译流程: 1)         编译流程: 2)         预处理:生成.i的预处理文件. Ø 只激活预处理,这个不生成文件,需要把它重定向一个输出文件. ...

  7. bzoj 3672 利用点分治将CDQ分治推广到树型结构上

    最大的收获就是题目所说. deal(s) : 处理节点s所在块的问题,并保证: 1.s是该块中最靠近根节点的点,没有之一. 2.s所在块到根节点的路径上的点全都用来更新过了s所在块的所有节点. 然后步 ...

  8. SPOJ 10232. Distinct Primes

    Arithmancy is Draco Malfoy's favorite subject, but what spoils it for him is that Hermione Granger i ...

  9. 移动端适配之REM

    随着手机等移动设备的普及,移动端带来的流量已经不可忽视,一个网站不只是只有pc的页面就足够了,移动端的适配已经势在必行.但是移动设备种类繁多,屏幕尺寸也千奇百怪,能不能找到一种方式可以适配所有的手机屏 ...

  10. bash编程之 ~制作Mini Linux系统~

    说明1:在一个Linux宿主机系统上,通过以上步骤,可以制作一个微小的Linux系统(可以放置在U盘中等),然后在其它的主机(虚拟机或者物理机)上运行,以实现最小化定制系统的目的. 说明2:上图中黑色 ...