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. #20145205 《Java程序设计》第4周学习总结

    教材学习内容总结 1.面对对象中,因为我们需要设计多个模块,但是有不能像C语言中那样进行分块设计,所以我们用父类和子类进行模块的设计,我们在设计一个较大的程序时,在一个项目中建立不同的文件,用关键字e ...

  2. 文本编辑器VIM/VI

    vim/vi  功能强大全屏文本编辑器.主要是建立,编辑,显示文本. www.vim.org  构建shell脚本 :set number 使文件出现行号 a 光标后附件文件     i在光标前插入文 ...

  3. 【iCore3应用开发平台】发布 iCore3 应用开发平台使用说明

    PDF下载地址:http://pan.baidu.com/s/1c2ca2lU

  4. mmysql-最大链接数和最大并发数的区别

    关于连接数和并发数的设置(针对Innodb引擎) 对于机器本身来说,进程数是说机器正在运行的进程数量,调出任务管理器就可以看到.连接数是指进程接收和发送数据的连接ip的数量.并发数是指进程同时发送数据 ...

  5. TotalCommander 之 快捷键

    显示编辑文件: F3:专门用来查看文件,这个恐怕是使用程度最高的快捷键了.当然并不是所有的文件都能打开,如需要查看更多类型的文件,还需要安装插件.或者直接双击用系统自带的软件查看也可.Ctrl + Q ...

  6. laravel Input Cokkie 的各种方法 超实用!!!

    基本输入 Laravel使用一种简单的方式来访问用户提交的信息. 你可以用统一的方式来访问用户提交的信息,而不用为用户提交信息的方式操心. 获取一个用户提交的值 代码如下: $name = Input ...

  7. Jquery--input

    - checkbox判断选中 checked = $("#admin_review_item_feature_" + id).is(':checked');

  8. 关于Hibernate 5 和 Hibernate 4 在创建SessionFactory的不同点分析(解决 org.hibernate.MappingException: Unknown entity: xx类报错问题)

    Hibernate4版本的SessionFactory实例构建的步骤是这样的(也是很多学习资料的通用范本): //Configuration就是代表着hibernate的那个xml配置文件对象,如果c ...

  9. div span

    无牵无挂,不带任何样式,因此经常使用div完成整体样式的构建,span完成细微样式的构建. div为块级元素,span为行内元素. 使用div完成显示区域的居中.左右浮动等,完成整体的样式布局,然后在 ...

  10. mongodb操作命令

    连接mongodb:(mongo命令打开的是一个javascript shell.所以js语法在这里面都行得通)mongo 192.168.18.xx:27088/ups -uusername -pp ...