iOS 图片轮播图(自动滚动)

#import "DDViewController.h"

#define DDImageCount 5

@interface DDViewController ()<UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;

//定时器

@property (nonatomic,strong)NSTimer *timer;

@end

@implementation DDViewController

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

// 设置一些固定的尺寸参数

CGFloat imageW = self.scrollView.frame.size.width;

CGFloat imageH = self.scrollView.frame.size.height;

CGFloat imageY = 0;

// 1.添加5张图片到scrollview中

for (int i=0; i<DDImageCount; i++) {

UIImageView *imageView = [[UIImageView alloc]init];

CGFloat imageX = i * imageW;

imageView.frame = CGRectMake(imageX, imageY, imageW, imageH);

imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"img_0%d",i+1]];

[self.scrollView addSubview:imageView];

}

// 2.设置内容尺寸

CGFloat contenW = DDImageCount * imageW;

// 水平滚动

self.scrollView.contentSize = CGSizeMake(contenW, 0);

// 上下滚动

//    self.scrollView.contentSize = CGSizeMake(0, XXXX);

// 3.隐藏水平滚动条

self.scrollView.showsHorizontalScrollIndicator = NO;

// 4.分页

self.scrollView.pagingEnabled = YES;

// 5.设置pagecontrol的总页数

self.pageControl.numberOfPages = DDImageCount;

// 6.添加定时器(每隔2秒调用一次self 的 nextImage的方法)

[self addTimer];

}

//添加定时器

- (void)addTimer

{

self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];

// 设置主线程。

[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];

}

//移除定时器

- (void)removertimer

{

[self.timer invalidate];

self.timer = nil;

}

- (void)nextImage

{

// 增加pagecontrol的页码

int page = 0;

if (self.pageControl.currentPage == DDImageCount - 1) {

page = 0;

}else{

page = self.pageControl.currentPage + 1;

}

// 计算scrollview滚动位置

CGFloat offsetX = page * self.scrollView.frame.size.width;

CGPoint offset = CGPointMake(offsetX, 0);

[self.scrollView setContentOffset:offset animated:YES];

}

//ScrollView代理方法。使用时要设置代理(self.delgate = self)或者在图片上进行设置

/**

*  当scrollView正在滚动就会调用

*/

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

// 根据scrollview的滚动位置决定pagecontrol显示第几页

CGFloat scrollW = scrollView.frame.size.width;

int page = (scrollView.contentOffset.x + scrollW * 0.5) / scrollW;

self.pageControl.currentPage = page;

}

/**

*  开始拖拽的时候调用

*/

- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView

{

// 停止定时器(一旦定时器停止了,就不能再使用)

[self removertimer];

}

/**

*  停止拖拽的时候调用

*/

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

//开启定时器

[self addTimer];

}

iOS 图片轮播图(自动滚动)的更多相关文章

  1. IOS 图片轮播实现原理 (三图)

    IOS 图片轮播实现原理的一种 图片轮播所要实现的是在一个显示区域内通过滑动来展示不同的图片. 当图片较少时我们可以采用在滚动视图上添加很多张图片来实现. 但是如果图片数量较多时,一次性加载过多图片会 ...

  2. ios图片轮播效果

    代码地址如下:http://www.demodashi.com/demo/11959.html ImageCarousel 简单封装的图片轮播器 内存过大由于我加载的图片分辨率较高(4k) 文件目录 ...

  3. 图片轮播图插件的使用 unslider!!!

    1.百度图片轮播图unslider,第一个就会出现jquery unslider轮播图,点击进去,下载网站提供的文件,解压,内部有我们需要使用的各种js,图片等. 2.在自己的eclipse或者int ...

  4. iOS开发--轮播图

    在不少项目中,都会有图片轮播这个功能,现在网上关于图片轮播的框架层出不穷,千奇百怪,笔者根据自己的思路,用两个imageView也实现了图片轮播,这里说说笔者的主要思路以及大概步骤,具体代码请看这里, ...

  5. 【自定义轮播图】微信小程序自定义轮播图无缝滚动

    先试试效果,可以通过设置参数调整样式 微信小程序中的轮播图可以直接使用swiper组件,如下: <swiper indicator-dots="{{indicatorDots}}&qu ...

  6. BannerDemo【图片轮播图控件】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下一个开源库youth5201314/banner的运用.具体用法请阅读<youth5201314/banner& ...

  7. iOS中 轮播图放哪最合适? 技术分享

    我们知道,轮播图放在cell或collectionViewCell上会影响用户层级交互事件,并且实现起来比较麻烦,现在推出一个技术点:答题思路是:将UIScrollView放在UIView或UICol ...

  8. android 使用图片轮播图---banner 使用

    转自:https://github.com/youth5201314/banner 使用步骤 Step 1.依赖banner Gradle dependencies{ compile 'com.you ...

  9. js图片轮播图

    /*焦点图*/        var Box='.carousel';//盒子        var Menu=$(Box+' .l_cursor li');//圆点菜单        var Con ...

随机推荐

  1. Activity与Fragment

    Fragment是Android honeycomb 3.0新增的概念,Fragment名为碎片不过却和Activity十分相似. Fragment是用来描述一些行为或一部分用户界面在一个Activi ...

  2. 一般处理程序如何获取session值

    1.要在一般处理程序中获取其他页面的session值,需要引用名空间: using System.Web.SessionState; 2.然后继承一个接口:IRequiresSessionState ...

  3. Win7 下安装VirtualBox 没有Ubuntu 64bit 选项问题

    参考: win7安装virtualbox遇到的问题 基于VirtualBox虚拟机安装Ubuntu图文教程 问题 在安装VirtualBox之后,选择虚拟机进行安装的时候发现没有Ubuntu 64bi ...

  4. ElasticSearch 自定义排序处理

    使用function_score进行分组处理,利用分组函数script_score进行自定义分值处理, 注意:使用script功能需要在配置中打开脚本功能: script.inline: on   s ...

  5. 60个有用CSS代码片段

    1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...

  6. iOS webView与H5的交互(返回页面的处理)

    摘自:http://blog.csdn.net/qq_29284809/article/details/50548413 调用 H5页面的同名返回方法(必须保证名字一致)!!!

  7. 微信小程序(应用号)资源汇总整理

    微信小应用资源汇总整理 开源项目 WeApp - 微信小程序版的微信 wechat-weapp-redux-todos - 微信小程序集成Redux实现的Todo list wechat-weapp- ...

  8. freemarker页面如何获取绝对路径basePath

    1. freemarker获取系统相对路径方式 spring-mvc.xml 中配置 <!-- FreeMarker视图解析 如返回userinfo..在这里配置后缀名ftl和视图解析器.. - ...

  9. docker 组件(c/s)

    Docker 组件 1. docker client : docker的客户端 2. docker server : docker daemon的主要组成部分,接受用户通过docker client发 ...

  10. 导入csv文件到mysql

    原文 给自己做备份的,高手们请忽略. 数据太大,用数据库客户端软件直接导入非常卡,还是直接执行SQL吧. 1.指定文件路径. 2.字段之间以逗号分隔,数据行之间以\r\n分隔(我这里文件是以\n分隔的 ...