/** 定时器 */
@property (nonatomic,strong) NSTimer *timer
- 添加startTimer方法在控件初始化时及scrollview结束滚动时调用
/**
* 开始定时器
*/
-(void)startTimer
{
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(nextPage) userInfo:nil repeats:YES];
//通知主线程
[[NSRunLoop mainRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];
}
/**
* 下一页
*/
-(void)nextPage
{
//下一页
NSInteger page = self.page.currentPage + 1;
//如果当前页等于最后一页,翻回第一页
if(page == self.page.numberOfPages){
page = 0;
}
CGPoint offset = self.scrollView.contentOffset;
// 0乘以当前scrollView的contentOffset的x即为第一页
// 1乘以当前scrollView的contentOffset的x即为第二页
// ...
// contentOffset的Y不变
offset.x = page * self.scrollView.frame.size.width;
[self.scrollView setContentOffset:offset animated:YES];
NSLog(@"nextPage");
}
- 实现
scrollview的scrollViewDidScroll
和scrollViewWillBeginDragging
协议在开始滚动及结束滚动时控制定时器。
/**
* scrollview开始滚动
*
* @param scrollView
*/
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self stopTime];
}
/**
* scrollview结束滚动
*
* @param scrollView
* @param decelerate
*/
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
[self startTime];
}
/**
* 结束定时器
*/
-(void)stopTime
{
[self.timer invalidate];//停止定时器
self.timer = nil;
}
最终效果