//初始化当前视图
_currentImageView = [[UIImageView alloc] init];
[_currentImageView setImageWithURL:[NSURL URLWithString:[array_pic objectAtIndex:]]];
_currentImageView.frame = CGRectMake(myScroller.frame.size.width, , myScroller.frame.size.width,);
// _currentImageView.contentMode = UIViewContentModeScaleAspectFill;
[myScroller addSubview:_currentImageView]; _nextImageView = [[UIImageView alloc] init];
[_nextImageView setImageWithURL:[NSURL URLWithString:[array_pic objectAtIndex:]]];
_nextImageView.frame = CGRectMake(myScroller.frame.size.width * , , myScroller.frame.size.width,);
// _nextImageView.contentMode = UIViewContentModeScaleAspectFill;
[myScroller addSubview:_nextImageView]; //初始化上一个视图
_previousView = [[UIImageView alloc] init];
[_previousView setImageWithURL:[NSURL URLWithString:[array_pic objectAtIndex:]]];
_previousView.frame = CGRectMake(, ,myScroller.frame.size.width,);
// _previousView.contentMode = UIViewContentModeScaleAspectFill; [myScroller addSubview:_previousView]; } {
SMPageControl *pageControl = [[SMPageControl alloc] init];
[pageControl setFrame:CGRectMake(, myScroller.frame.size.height+ - 10.0f,myScroller.frame.size.width,10.0f)];
[pageControl setNumberOfPages:];
[pageControl setBackgroundColor:[UIColor clearColor]];
[pageControl setCurrentPage:];
[pageControl setCurrentPageIndicatorTintColor:[UIColor lightGrayColor]];
[pageControl setPageIndicatorTintColor:[UIColor grayColor]];
myPageControl=pageControl;
[self.view addSubview:myPageControl];
} if (![myTimer isValid]) {
myTimer=[NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(updateAuto) userInfo:nil repeats:YES];
} #pragma mark 时钟动画调用方法
- (void)updateAuto
{
if (_isDraging) {
return;
} CGPoint offset = myScroller.contentOffset; offset.x += self.view.frame.size.width;
if (offset.x > self.view.frame.size.width*) {
offset.x = self.view.frame.size.width;
} [myScroller setContentOffset:offset animated:YES];
} #pragma mark - 代理方法
#pragma mark 准备开始拖动
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
_isDraging = YES;
} #pragma mark 视图停止滚动
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
_isDraging = NO;
} #pragma mark 已经拖动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ static int i = ;//当前展示的是第几张图片 float offset = scrollView.contentOffset.x;
if (_nextImageView.image == nil || _previousView.image == nil) { //加载下一个视图
[_nextImageView setImageWithURL:[NSURL URLWithString:[array_pic objectAtIndex:i == kCount ? : i+]]]; //加载上一个视图
[_previousView setImageWithURL:[NSURL URLWithString:[array_pic objectAtIndex:i == ? kCount : i - ]]];
} if (offset == ) {
_currentImageView.image = _previousView.image;
scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, );
_previousView.image = nil; if (i == ) {
i = kCount;
}else{
i -= ;
} } if (offset == scrollView.bounds.size.width * ) {
_currentImageView.image = _nextImageView.image;
scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, );
_nextImageView.image = nil; if (i == kCount) {
i = ; //如果当前图片索引在最后一个,则重置为0,否则+1
}else{
i += ;
}
}
[myPageControl setCurrentPage:i];
}

iOS 有关自动轮播图片的更多相关文章

  1. JavaScript学习之自动轮播图片

    定时器 在实现轮播图之前需要首先了解一下JavaScript的定时器 setInterval()和clearInterval() 1.setInterval() 方法可按照指定的周期(以毫秒计)来调用 ...

  2. jQuery实际案例①——淘宝精品广告(鼠标触碰切换图片、自动轮播图片)

    遇到的问题:自动轮播的实现,实质与轮播图一样儿一样儿的,不要被不同的外表所欺骗,具体的js代码如下:

  3. js自动轮播图片的两种循环方法(原创)

    用5个div,布局从左到右5张图片,从左到右5个div分别指定ID为img1,img2,img3,img4,img5.(背景是relative,5个div是相对于背景absolute定位) 显示如下: ...

  4. jQuery自动轮播图片焦点图

    在线演示 本地下载

  5. 解决:使用 swiper 自动轮播图片,当拖动过 swiper 内的内容时,导致不继续自动轮播

    版本为1.3 当使用了 swiper 后: var mySwiper = new Swiper('.banner .swiper-container', { autoplay: 3000, loop: ...

  6. 仿网易新闻 ViewPager 实现图片自动轮播

    新闻 App 首页最上方一般会循环播放热点图片,如下图所示. 本文主要介绍了利用 ViewPager 实现轮播图片,图片下方加上小圆点指示器标记当前位置,并利用 Timer+Handler 实现了自动 ...

  7. iOS开发笔记6:图片轮播及其无限循环效果

    平时APP中的广告位或者滚动的新闻图片等用到的就是图片轮播这种效果,实现方式主要有两种,一种是ScrollView+ImageView,另一种则是通过CollectionView,今天总结的是Scro ...

  8. ios - 图片自动轮播定时器(NSTimer)以及消息循环模式简介

    本文只是演示如何设置图片轮播的定时器. 创建全局变量NSTimer 程序启动后就开始轮播图片,所以在- (void)viewDidLoad中就启动定时器. 将定时器放入消息循环池中.- (void)v ...

  9. AJ学IOS(11)UI之图片自动轮播

    AJ分享,必须精品 先看效果 代码 #import "NYViewController.h" #define kImageCount 5 @interface NYViewCont ...

随机推荐

  1. html树形菜单控件

    html树形菜单控件  链接 http://www.ithao123.cn/content-713974.html         jQuery plugin: Treeview  这个插件能够把无序 ...

  2. POI2001 Gold mine(二叉排序树 黑书经典)

    采矿(KOP) 金矿的老师傅年底要退休了.经理为了奖赏他的尽职尽责的工作,决定送他一块长方形地.长度为S,宽度为W.老师傅可以自己选择这块地.显然其中包含的采金点越多越好.你的任务就是计算最多能得到多 ...

  3. redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)

    一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...

  4. Event事件详解

    首先提到event,先要明白event的产生,也要先明白焦点,什么是焦点.焦点 : 使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入. 我们可以通过一些方式给元素设置 ...

  5. (七)学习MVC之CodeFirst迁移更新数据库

    1.首先在程序包管理控制台输入:enable-migrations -force ,然后回车: 问题1: The EntityFramework package is not installed on ...

  6. SharePoint 2010 出错! HTTP Error 503. The service is unavailable

    转:http://544729.blog.51cto.com/534729/464087 昨天,公司的sharepoint 2010 无法打开,提示HTTP Error 503. The servic ...

  7. 初识NuGet - 概念, 安装和使用

    1. NuGet是什么? NuGet is a Visual Studio 2010 extension that makes it easy to add, remove, and update l ...

  8. 使用busybox制作rootfs

    Build Busybox as a static binary(no shared libs),如果选择上,则busybox将以静态形式进行编译,否则将以动态方式编译.此外,还需要对交叉编译环境进行 ...

  9. 单点登录技术:微软Passport单点登录协议和自由联盟规范

    随着互联网络应用的普及,越来越多的人开始使用互联网上提供的服务.然而目前提供服务的网站大多采用用户名.口令的方式来识别用户身份,这使得用户需要经常性的输入自己的用户名.口令.显然这种认证方式存在着弊端 ...

  10. MMU(what,how,todo)

    出处:http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=11580&fromuid=5490 正文黑色,代码蓝色,重点标红. ...