#import "ViewController.h"

#define IMAGENUMBER  5
#define SIZE self.view.bounds.size
@interface ViewController ()
{
UIScrollView *_scrollerView ;
UIImageView *_leftImageView ;
UIImageView *_centerImageVIew;
UIImageView *_rightImagView;
UIPageControl *_pageCoontroller;   //当前索引下标
NSInteger _curremtIndex; }
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor =[UIColor brownColor];
[self createScrollerView];
} -(void)createScrollerView
{
_scrollerView =[[UIScrollView alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; [self.view addSubview:_scrollerView];   //创建左,中,右,三个ImageView视图
_leftImageView =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"0.jpg"]];
_centerImageVIew =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1.jpg"]];
_rightImagView =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"2.jpg"]]; _leftImageView.frame =CGRectMake(, , SIZE.width, SIZE.height);
_centerImageVIew.frame =CGRectMake(SIZE.width, , SIZE.width, SIZE.height);
_rightImagView.frame =CGRectMake(SIZE.width*, , SIZE.width, SIZE.height);   //添加
[_scrollerView addSubview:_leftImageView];
[_scrollerView addSubview:_centerImageVIew];
[_scrollerView addSubview:_rightImagView];
_scrollerView.contentSize=CGSizeMake(SIZE.width*, SIZE.height);
_scrollerView.pagingEnabled=YES;
_scrollerView.delegate=self;
_scrollerView.contentOffset=CGPointMake(SIZE.width, ); _scrollerView.showsHorizontalScrollIndicator=NO;
_scrollerView.showsVerticalScrollIndicator=NO;   //页码指示器
_pageCoontroller =[[UIPageControl alloc]initWithFrame:CGRectMake((SIZE.width-)/, SIZE.height-, SIZE.width-, )]; _curremtIndex=;
_pageCoontroller.numberOfPages=IMAGENUMBER;
_pageCoontroller.backgroundColor=[UIColor clearColor];
_pageCoontroller.pageIndicatorTintColor=[UIColor orangeColor];
_pageCoontroller.currentPageIndicatorTintColor=[UIColor purpleColor];
_pageCoontroller.currentPage=_curremtIndex;
[_pageCoontroller addTarget:self action:@selector(NextImageClicked) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:_pageCoontroller];
} -(void)NextImageClicked
{
NSInteger pageImage =_pageCoontroller.currentPage;
if (pageImage==_pageCoontroller.currentPage+) {
pageImage+=;
}else{
pageImage-=;
}
_curremtIndex=pageImage;
_scrollerView.contentOffset=CGPointMake(SIZE.width*pageImage, );
} -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[self loadImage];
[UIView animateWithDuration:0.5 animations:^{
_pageCoontroller.currentPage= _curremtIndex;
}];
} -(void)loadImage
{
//创建动画效果
CATransition *transaction =[[CATransition alloc]init]; CGPoint offset =_scrollerView.contentOffset;   //向右滚动
if (offset.x>) {    //动画类型
transaction.type =@"fade";   //通过取余运算获取当前索引下标  
_curremtIndex=(_curremtIndex+)%IMAGENUMBER;
NSString *rightImage =[NSString stringWithFormat:@"%li.jpg",_curremtIndex];
_rightImagView.image=[UIImage imageNamed:rightImage];
}else{//向左滚动
transaction.type=@"fade";
_curremtIndex=(_curremtIndex-+IMAGENUMBER)%IMAGENUMBER;
NSString *leftImage =[NSString stringWithFormat:@"%li.jpg",_curremtIndex];
_leftImageView.image=[UIImage imageNamed:leftImage];
}    //添加动画效果
[_scrollerView.layer addAnimation:transaction forKey:@"transaction"];
}

iOS--UIScrollView图片动画切换【实现每次只加载3张图片,进而减少占用内存,可循环滚动】的更多相关文章

  1. JS获取图片的缩略图,并且动态的加载多张图片

    找了好多资料也没有找到该死的ie的解决办法,最后放弃了ie <!DOCTYPE html> <html> <head> <meta charset=" ...

  2. Swift - 表格图片加载优化(拖动表格时不加载,停止时只加载当前页图片)

    列表的单元格中包含有图片在开发中很常见.通常我们可以直接在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIn ...

  3. Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)

    最近在做ListView分页显示,其中包括图片 和文字(先下载解析文字内容,再异步加载图片)发现每次点击下一页后,文字内容加载完毕,马上向下滑动,由于这时后台在用线程池异步下载图片,我每页有20条,也 ...

  4. swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)

    swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...

  5. 为网格布局图片打造的超炫 CSS 加载动画

    今天,我想与大家分享一些专门为网格布局的图像制作的很酷的 CSS 加载动画效果.您可以把这些效果用在你的作品集,博客或任何你想要的网页中.设置很简单.我们使用了下面这些工具库来实现这个效果: Norm ...

  6. iOS:延迟加载和上拉刷新/下拉加载的实现

    lazy懒加载(延迟加载)UITableView 举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要 ...

  7. 【Android】再来一篇Fragment懒加载(只加载一次哦)

    效果 老规矩,先来看看效果图 没错,我又入坑了,又重新做了个 Gank 客户端,因为之前那个代码写得太烂了,这次有好好的考虑了下架构之类的事,代码应该会更容易读懂了点了,吧.哈哈,再次欢迎来 star ...

  8. 前端图片缓存之通过img标签加载GIF只能播放一次问题(转载)

    最近项目中要求再网页中插入一张gif图片,让用户每次到达该位置时动一次,所以我们就制作了一张只动一次的gif图片通过img标签引入.当用户进入该位置时,通过remove()清除图片然后重新append ...

  9. Angular项目中核心模块core Module只加载一次的实现

    核心模块CoreModule在整个系统中只加载一次,如何实现? 创建core Modele:ng g m core 既然CoreModule是类,就有构造函数,在构造函数中进行依赖注入. export ...

随机推荐

  1. C#+ AE 注意问题汇总(不断更新)

    1.AE的COM对象释放问题尤其是IFeatureCursor 建议用 ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(pObj); 或者 int iRefs ...

  2. 一步一步学习Bootstrap系列--表单布局

    前言:Bootstrap 属于前端 ui 库,通过现成的ui组件能够迅速搭建前端页面,简直是我们后端开发的福音,通过几个项目的锻炼有必要总结些常用的知识,本篇把常用的Bootstrap表单布局进行归纳 ...

  3. SVN如何查看修改的文件记录] 来源:Linux社区 作者:frogoscar

    SVN如何查看修改的文件记录 [日期:2014-11-20] 来源:Linux社区  作者:frogoscar [字体:大 中 小]     主要是有四个命令,svn log用来展示svn 的版本作者 ...

  4. html 图像映射(一个图像多个连接)

    以前就见过那种导航地图,点击地图的不同省份分别跳到不同的连接,现在用html实现一下,简单的. 图像映射是指一个图像可以建立多个连接,就是在图像上面定义多个区域,每个区域连接到不同的地址. 效果如图: ...

  5. 浅谈JSON

    JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格式,为什么没有 ...

  6. js导出表格数据

    考虑到浏览器兼容性问题,采用原生js和后台交互下载网页数据 js: var table = $('.table-panel table'); // Header var tdData ="& ...

  7. 深入浅出iOS事件机制

    原文地址: http://zhoon.github.io/ios/2015/04/12/ios-event.html 本文章将讲解有关iOS事件的传递机制,如有错误或者不同的见解,欢迎留言指出. iO ...

  8. SQL语句 分页实现

    1 通过sql实现分页. select top 5 * from judgeorder where id  not in (select top 10 id from judgeorder order ...

  9. Android 组件和进程的一些关系

    1.Service 如果没有单独指定线程的话,那么和主activity是在同一个线程的,就是主线程,那么也不能够在这个service中做耗时操作,否则一定会中断退出. 2.默认情况下,一个Androi ...

  10. Python入门(一)

    Python版本:Python 2.7.5 Python是一种面向对象.解释型计算机程序设计语言 1.基本操作符python的除法的结果会随着数值类型的变化而变化整数相除,结果会取整实数相除,结果会取 ...