iOS开发-UIScrollView图片无限循环
关于UIScrollView图片浏览的例子有很多,之前也写过类似方面的文章,关于UIScrollView的图片循环在新闻类的App基本上是比较常见的一种情况就是图片浏览,然后根据不同的图片显示不同的内容显示不同的图片的介绍,因为属于比较常用的空间,先来看下需要实现的效果:

小圆点指示器是通过UIPageControl实现的,图片循环通过UIScrollView实现:
-(UIPageControl *)pageControl{
if (!_pageControl) {
_pageControl=[[UIPageControl alloc]initWithFrame:CGRectMake(0, 0, 150, 40)];
_pageControl.currentPage=0;
_pageControl.pageIndicatorTintColor=[UIColor whiteColor];
_pageControl.currentPageIndicatorTintColor=[UIColor greenColor];
}
return _pageControl;
}
-(UIScrollView *)scrollView{
if (!_scrollView) {
CGRect screenRect=[[UIScreen mainScreen]bounds];
_scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 64, CGRectGetWidth(screenRect), CGRectGetHeight(screenRect)-164)];
[_scrollView setBounces:NO];
[_scrollView setShowsHorizontalScrollIndicator:NO];
[_scrollView setPagingEnabled:YES];
_scrollView.delegate=self;
}
return _scrollView;
}
关于分页的页面配置以及页数Label的设置:
self.screenRect=[[UIScreen mainScreen]bounds];
CGFloat width=self.scrollView.bounds.size.width;
CGFloat height=self.scrollView.bounds.size.height;
self.imageArr=@[@"girl0.jpg",@"girl1.jpg",@"girl2.jpg"];
[self.scrollView setContentSize:CGSizeMake([self.imageArr count]*width, height)]; for (NSInteger i=0; i<[self.imageArr count]; i++) {
UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(i*width, 0, width,height)];
imageView.image=[UIImage imageNamed:self.imageArr[i]];
imageView.contentMode=UIViewContentModeScaleToFill;
[self.scrollView addSubview:imageView];
}
[self.view addSubview:self.scrollView]; self.pageControl.numberOfPages=[self.imageArr count];
self.pageControl.center=CGPointMake(self.scrollView.center.x, CGRectGetMaxY(self.scrollView.bounds)+50);
[self.view addSubview:self.pageControl];
self.pageLabel.text=[NSString stringWithFormat:@"%d/%lu",1,[self.imageArr count]];
[self.view addSubview:self.pageLabel];
实现UIScrollViewDelegate中scrollViewDidEndDecelerating的方法:
//博客园-FlyElephant 原文地址:http://www.cnblogs.com/xiaofeixiang/
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
if (self.currentPage==[self.imageArr count]-1) {
self.currentPage=0;
self.scrollView.contentOffset=CGPointMake(0, 0);
}else{
self.currentPage=scrollView.contentOffset.x/CGRectGetWidth(self.screenRect);
}
self.pageControl.currentPage=self.currentPage;
[self.pageLabel setText:[NSString stringWithFormat:@"%ld/%lu",self.currentPage+1,[self.imageArr count]]];
}
简单的UIScrollView实现基本上ok了,当然关于UIScrollView根据不同场景去实现不同的功能代码量比这肯定更复杂~
iOS开发-UIScrollView图片无限循环的更多相关文章
- iOS开发UI篇—无限轮播(循环利用)
iOS开发UI篇—无限轮播(循环利用) 一.无限轮播 1.简单说明 在开发中常需要对广告或者是一些图片进行自动的轮播,也就是所谓的无限滚动. 在开发的时候,我们通常的做法是使用一个UIScrollV ...
- iOS开发UI篇—无限轮播(循环展示)
iOS开发UI篇—无限轮播(循环展示) 一.简单说明 之前的程序还存在一个问题,那就是不能循环展示,因为plist文件中只有五个数组,因此第一个和最后一个之后就没有了,下面介绍处理这种循环展示问题的小 ...
- iOS开发UI篇—无限轮播(功能完善)
iOS开发UI篇—无限轮播(功能完善) 一.自动滚动 添加并设置一个定时器,每个2.0秒,就跳转到下一条. 获取当前正在展示的位置. [self addNSTimer]; } -(void)addNS ...
- iOS开发UI篇—无限轮播(新闻数据展示)
iOS开发UI篇—无限轮播(新闻数据展示) 一.实现效果 二.实现步骤 1.前期准备 (1)导入数据转模型的第三方框架MJExtension (2)向项目中添加保存有“新闻”数据的pli ...
- 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 ...
- 利用jQuery实现图片无限循环轮播(不借助于轮播插件)
原来我主要是用Bootstrap框架或者swiper插件实现轮播图的功能,而这次是用jQuery来实现图片无限循环轮播! 用到的技术有:html.css.JavaScript(少).jQuery(主要 ...
- iOS开发UIScrollView的底层实现
起始 做开发也有一段时间了,经历了第一次完成项目的激动,也经历了天天调用系统的API的枯燥,于是就有了探索底层实现的想法. 关于scrollView的思考 在iOS开发中我们会大量用到scrollVi ...
随机推荐
- php模板引擎之blade
一.简介模板引擎 模板引擎是将网站的页面设计和PHP应用程序几乎完全分离的一种解决方案,它能让前端工程师专注页面搭建,让后台工程师专注功能实现,以便实现逻辑分离,让每个人发挥所长.模板引擎技术的核心是 ...
- 【BZOJ 1563】 (四边形优化、决策单调性)
1563: [NOI2009]诗人小G Time Limit: 100 Sec Memory Limit: 64 MBSubmit: 2611 Solved: 840 Description In ...
- [CF580E]Kefa and Watch
题目大意: 维护一个由'0'~'9'构成的字符串,支持以下两种操作: 1.将指定区间内的所有字符修改为同一指定字符. 2.询问$x$是否为指定区间内的循环节. 思路: 建立一棵线段树,维护每个子串的哈 ...
- hdu 4460 第37届ACM/ICPC杭州赛区H题 STL+bfs
题意:一些小伙伴之间有朋友关系,比如a和b是朋友,b和c是朋友,a和c不是朋友,则a和c之间存在朋友链,且大小为2,给出一些关系,求出这些关系中最大的链是多少? 求最短路的最大距离 #include& ...
- 2017-2018-2 20172302 『Java程序设计』课程 结对编程练习_四则运算
1.结对对象 20172308周亚杰 2.本周内容 需求分析 (1).自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目,类似于: 1级题目:2 + 5 = .10 ...
- A brief CRC tutorial
https://www.kernel.org/doc/Documentation/crc32.txt A brief CRC tutorial. A CRC is a long-division re ...
- 基于设备树的TQ2440 DMA学习(1)—— 芯片手册
作者 彭东林pengdonglin137@163.com 平台 TQ2440内核Linux4.9 概述 一直想抽时间学习一下DMA驱动,今天就以S3C2440为例,这款芯片的DMA控制器足够简单,也比 ...
- Lucene 3.0 输出相似度
http://www.cnblogs.com/ibook360/archive/2011/10/19/2217638.html Lucene3.0之结果排序(原理篇) 传统上,人们将信息检索系统返回结 ...
- 什么时候用var关键字
C#关键字是伴随这.NET 3.5以后,伴随着匿名函数.LINQ而来, 由编译器帮我们推断具体的类型.总体来说,当一个变量是局部变量(不包括类级别的变量),并且在声明的时候初始化,是使用var关键字的 ...
- Delphi XE 6,Rad Studio XE 6 官方下载(附破解)
官方光盘镜像下载: http://altd.embarcadero.com/download/radstudio/xe6/delphicbuilder_xe6_win.iso RAD Studio ...