无限轮播器
2016-04-30 15:55
309 查看
设置定时器
contentSize : 内容的大小 对应
CGSizeMake
setContentOffset : 设置偏移量 对应 CGPointMake
+++++++++++++方法一+++++++++++++++
/** 如果有4张图片
1 .添加一个
fist图片框
显示最后一张图片
2 .拼接图片(把前5张图片拼接成一张图)
3 .
添加last图片框 显示第一张图片
4 .内容大小赋值
self.scrollview.contentSize
=
CGSizeMake(KScrollView_Size.width
* (KIMG_Count
+
2),KScrollView_Size.height
);
5.
设置scrollview的属性
self.scrollview.delegate
=
self;
self.scrollview.pagingEnabled
=
YES;
self.scrollview.showsHorizontalScrollIndicator
=
NO;
self.scrollview.bounces
=
NO;
// 6 .设置pageControll的属性
self.pageControll.currentPage
=
0;
self.pageControll.numberOfPages
=
KIMG_Count;
//初始化
图片显示是第一张图
[self.scrollview
setContentOffset:CGPo
4000
intMake(KScrollView_Size.width,
0)];
*/
7.设置定时器
- (void)setupTimer{
//
创建一个NSTimer定时器对象 schedule
: 计划 Interval : 间隔
self.timer
= [NSTimer
scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(nextPage)
userInfo:nil
repeats:YES];
}
//自动跳转到下一张图片
- (void)nextPage{
CGFloat
offsetX =
self.scrollView.contentOffset.x
+
SCROLLVIEW_SIZE.width;
[self.scrollView
setContentOffset:CGPointMake(offsetX,
0)
animated:YES];
}
UIScrollViewDelegate
的代理方法
//
当滚动停止的时候,滚回对应的位置
- (void)scrollViewDidEndDecelerating:(UIScrollView
*)scrollView{
***************下面判断中 scrollView 用的是 上面方法中的scrollView参数而不是
self.scrollView
if (scrollView.contentOffset.x
== (SCROLLVIEW_SIZE.width
* (IMG_COUNT
+
1))){//
滚动到了最后一个图片框
// 让scrollView滚动到第二个图片框
[self.scrollView
setContentOffset:CGPointMake(SCROLLVIEW_SIZE.width,
0)];
}else
if (scrollView.contentOffset.x
==
0){
// 让scrollView滚动到倒数第二个图片框(第五个)
[self.scrollView
setContentOffset:CGPointMake(SCROLLVIEW_SIZE.width
*
IMG_COUNT,
0)];
}
}
//停止滚动
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView
*)scrollView{
if (scrollView.contentOffset.x
== (SCROLLVIEW_SIZE.width
* (IMG_COUNT
+
1))){//
滚动到了最后一个图片框
// 让scrollView滚动到第二个图片框
[self.scrollView
setContentOffset:CGPointMake(SCROLLVIEW_SIZE.width,
0)];
}else
if (scrollView.contentOffset.x
==
0){
// 让scrollView滚动到倒数第二个图片框(第五个)
[self.scrollView
setContentOffset:CGPointMake(SCROLLVIEW_SIZE.width
*
IMG_COUNT,
0)];
}
}
//开始
拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView
*)scrollView{
[self.timer
invalidate];
}
//结束拖拽
- (void)scrollViewDidEndDragging:(UIScrollView
*)scrollView willDecelerate:(BOOL)decelerate{
[self
setupTimer];
}
//
实时计算页码
- (void)scrollViewDidScroll:(UIScrollView
*)scrollView{
int index =
round(scrollView.contentOffset.x
/
SCROLLVIEW_SIZE.width
-
1);
if (index ==
IMG_COUNT) {
index =
0;
}else
if (index == -1){
index =
IMG_COUNT
-
1;
}
self.pageControl.currentPage
= index;
}
+++++++++++++方法二:+++++++++++++++
contentSize : 内容的大小 对应
CGSizeMake
setContentOffset : 设置偏移量 对应 CGPointMake
+++++++++++++方法一+++++++++++++++
/** 如果有4张图片
1 .添加一个
fist图片框
显示最后一张图片
2 .拼接图片(把前5张图片拼接成一张图)
3 .
添加last图片框 显示第一张图片
4 .内容大小赋值
self.scrollview.contentSize
=
CGSizeMake(KScrollView_Size.width
* (KIMG_Count
+
2),KScrollView_Size.height
);
5.
设置scrollview的属性
self.scrollview.delegate
=
self;
self.scrollview.pagingEnabled
=
YES;
self.scrollview.showsHorizontalScrollIndicator
=
NO;
self.scrollview.bounces
=
NO;
// 6 .设置pageControll的属性
self.pageControll.currentPage
=
0;
self.pageControll.numberOfPages
=
KIMG_Count;
//初始化
图片显示是第一张图
[self.scrollview
setContentOffset:CGPo
4000
intMake(KScrollView_Size.width,
0)];
*/
7.设置定时器
- (void)setupTimer{
//
创建一个NSTimer定时器对象 schedule
: 计划 Interval : 间隔
self.timer
= [NSTimer
scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(nextPage)
userInfo:nil
repeats:YES];
}
//自动跳转到下一张图片
- (void)nextPage{
CGFloat
offsetX =
self.scrollView.contentOffset.x
+
SCROLLVIEW_SIZE.width;
[self.scrollView
setContentOffset:CGPointMake(offsetX,
0)
animated:YES];
}
UIScrollViewDelegate
的代理方法
//
当滚动停止的时候,滚回对应的位置
- (void)scrollViewDidEndDecelerating:(UIScrollView
*)scrollView{
***************下面判断中 scrollView 用的是 上面方法中的scrollView参数而不是
self.scrollView
if (scrollView.contentOffset.x
== (SCROLLVIEW_SIZE.width
* (IMG_COUNT
+
1))){//
滚动到了最后一个图片框
// 让scrollView滚动到第二个图片框
[self.scrollView
setContentOffset:CGPointMake(SCROLLVIEW_SIZE.width,
0)];
}else
if (scrollView.contentOffset.x
==
0){
// 让scrollView滚动到倒数第二个图片框(第五个)
[self.scrollView
setContentOffset:CGPointMake(SCROLLVIEW_SIZE.width
*
IMG_COUNT,
0)];
}
}
//停止滚动
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView
*)scrollView{
if (scrollView.contentOffset.x
== (SCROLLVIEW_SIZE.width
* (IMG_COUNT
+
1))){//
滚动到了最后一个图片框
// 让scrollView滚动到第二个图片框
[self.scrollView
setContentOffset:CGPointMake(SCROLLVIEW_SIZE.width,
0)];
}else
if (scrollView.contentOffset.x
==
0){
// 让scrollView滚动到倒数第二个图片框(第五个)
[self.scrollView
setContentOffset:CGPointMake(SCROLLVIEW_SIZE.width
*
IMG_COUNT,
0)];
}
}
//开始
拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView
*)scrollView{
[self.timer
invalidate];
}
//结束拖拽
- (void)scrollViewDidEndDragging:(UIScrollView
*)scrollView willDecelerate:(BOOL)decelerate{
[self
setupTimer];
}
//
实时计算页码
- (void)scrollViewDidScroll:(UIScrollView
*)scrollView{
int index =
round(scrollView.contentOffset.x
/
SCROLLVIEW_SIZE.width
-
1);
if (index ==
IMG_COUNT) {
index =
0;
}else
if (index == -1){
index =
IMG_COUNT
-
1;
}
self.pageControl.currentPage
= index;
}
+++++++++++++方法二:+++++++++++++++
相关文章推荐
- 逆波兰表达式
- 一个电商项目的Web服务化改造4:方案和架构,通用接口的定义和实现
- Java应用架构的演化之路
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
- 矩阵快速幂算法+列题(HDU 5667 Sequence)
- 一个电商项目的Web服务化改造4:方案和架构,通用接口的定义和实现
- 每天一个linux命令:top
- 自考总结
- 【Spring进阶】spring对AOP的支持-注解方式和配置方式
- 3月30日作业
- 架构的本质
- 详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题(转)
- 第九周学习进度情况
- 【Struts】Struts2简介及实现用户登录代码示例
- 常见的USB VID
- leetcode——121——Best Time to Buy and Sell Stock
- python基础(一)
- 欢迎使用CSDN-markdown编辑器
- 1019. 数字黑洞 (20)
- C++单例的创建与使用