UIScrollView配合定时器自动循环滚动
2015-11-12 14:07
363 查看
@property (strong,
nonatomic) UIScrollView *scrollView;
@property (strong,
nonatomic)UIPageControl *pageControl;
//定时器
@property(strong,nonatomic)NSTimer * timer;
- (void)viewDidLoad {
[super
viewDidLoad];
_timeIndex=0;
_timer = [NSTimer
scheduledTimerWithTimeInterval:3
target:self
selector:@selector(scrollChange)
userInfo:nil
repeats:YES];
}
//定时器执行方法
-(void)scrollChange
{
_timeIndex++;
if (_timeIndex ==
5) {
// NSLog(@"_timeIndex = %ld",_timeIndex);
_timeIndex = 1;
_scrollView.contentOffset =
CGPointMake(WIDTH *
_timeIndex, 0);
}else
if(_timeIndex ==
6)
{
_timeIndex = 3;
_scrollView.contentOffset =
CGPointMake(WIDTH *
_timeIndex, 0);
}
else {
_scrollView.contentOffset =
CGPointMake(_timeIndex *WIDTH,0);
}
}
//将开始拖拽时使定时器停止
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"1");
[_timer
invalidate];
_timer = nil;
}
//拖拽结束时再开启定时器
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"@@");
_timeIndex = scrollView.contentOffset.x/WIDTH ;
NSLog(@"_timeIndex = %ld",_timeIndex);
_timer = [NSTimer
scheduledTimerWithTimeInterval:3
target:self
selector:@selector(scrollChange)
userInfo:nil
repeats:YES];
}
//scrollview发生变动时调用此方法,多次调用
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//防止同一个view上其他的scrollview同时调用此方法
if (scrollView.tag ==200) {
UIPageControl * pc = (UIPageControl *)[self.view
viewWithTag:10];
// _timeIndex++;
int currentPage =scrollView.contentOffset.x/WIDTH;
// NSLog(@"currentPage = %d",currentPage);
if (currentPage >
5) {
_scrollView.contentOffset =
CGPointMake(WIDTH *
2, 0);
}
else if (currentPage<1) {
_scrollView.contentOffset =
CGPointMake(4*WIDTH,0);
pc.currentPage =
4;
}
if (currentPage >0 && currentPage <
5) {
pc.currentPage = currentPage-1;
}else
if (currentPage ==
5)
{
pc.currentPage =
0;
}else
if (currentPage ==
6)
{
pc.currentPage =
1;
}else
if(currentPage ==
0)
{
pc.currentPage =
3;
}
}
}
nonatomic) UIScrollView *scrollView;
@property (strong,
nonatomic)UIPageControl *pageControl;
//定时器
@property(strong,nonatomic)NSTimer * timer;
- (void)viewDidLoad {
[super
viewDidLoad];
_timeIndex=0;
_timer = [NSTimer
scheduledTimerWithTimeInterval:3
target:self
selector:@selector(scrollChange)
userInfo:nil
repeats:YES];
}
//定时器执行方法
-(void)scrollChange
{
_timeIndex++;
if (_timeIndex ==
5) {
// NSLog(@"_timeIndex = %ld",_timeIndex);
_timeIndex = 1;
_scrollView.contentOffset =
CGPointMake(WIDTH *
_timeIndex, 0);
}else
if(_timeIndex ==
6)
{
_timeIndex = 3;
_scrollView.contentOffset =
CGPointMake(WIDTH *
_timeIndex, 0);
}
else {
_scrollView.contentOffset =
CGPointMake(_timeIndex *WIDTH,0);
}
}
//将开始拖拽时使定时器停止
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"1");
[_timer
invalidate];
_timer = nil;
}
//拖拽结束时再开启定时器
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"@@");
_timeIndex = scrollView.contentOffset.x/WIDTH ;
NSLog(@"_timeIndex = %ld",_timeIndex);
_timer = [NSTimer
scheduledTimerWithTimeInterval:3
target:self
selector:@selector(scrollChange)
userInfo:nil
repeats:YES];
}
//scrollview发生变动时调用此方法,多次调用
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//防止同一个view上其他的scrollview同时调用此方法
if (scrollView.tag ==200) {
UIPageControl * pc = (UIPageControl *)[self.view
viewWithTag:10];
// _timeIndex++;
int currentPage =scrollView.contentOffset.x/WIDTH;
// NSLog(@"currentPage = %d",currentPage);
if (currentPage >
5) {
_scrollView.contentOffset =
CGPointMake(WIDTH *
2, 0);
}
else if (currentPage<1) {
_scrollView.contentOffset =
CGPointMake(4*WIDTH,0);
pc.currentPage =
4;
}
if (currentPage >0 && currentPage <
5) {
pc.currentPage = currentPage-1;
}else
if (currentPage ==
5)
{
pc.currentPage =
0;
}else
if (currentPage ==
6)
{
pc.currentPage =
1;
}else
if(currentPage ==
0)
{
pc.currentPage =
3;
}
}
}
相关文章推荐
- requestWindowFeature使用详解
- UITextField addTarget (实时监听,动态获取UITextFieldtext的值变化)
- [LeetCode] Range Sum Query 2D - Immutable 二维区域和检索 - 不可变
- LeetCode Range Sum Query - Immutable & Range Sum Query 2D - Immutable
- OC第二天 UITextField UIButtton UIAlertView
- prufer sequence
- UITextField、UITextView
- 【bzoj4059】[Cerc2012]Non-boring sequences
- kendo-ui的使用和开发自己的组件(思路清晰)
- Android UI 线程执行操作的三种方式
- iOS在UITableView全面解析
- iOS UILabel详解(转载)
- UIScrollViewDelegate-委托方法API
- IOS开发之UIScrollViewDelegate详解
- [桌面版] 在 Mockplus 2.1 (预览版)中使用切换面板
- [桌面版] 在 Mockplus 2.1 (预览版)中使用滚动区
- JD-GUI查看jar包里java源码
- hdu5531 Rebuild
- Range Sum Query - Immutable
- Range Sum Query 2D - Immutable