讓圖片自動滾動的話,須要使使用定時器,循環計算當前頁的頁碼。而且在拖動圖片時中止計時器,中止拖動時啓動計時器。ide
1 [self performSelector:@selector(hideHUD) withObject:nil afterDelay:2.0]; 2 - (void)hideHUD 3 { 4 _hudLable.hidden = YES; 5 }
1 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), 2 dispatch_get_main_queue(), ^{ 3 _hudLable.hidden = YES; 4 });
1 [NSTimer scheduledTimerWithTimeInterval:3.0 2 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];
1 // 1 建立定時器,由系統控制其生命週期 2 [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES]; 3 // 2 建立定時器,不過是局部變量 4 //NSTimer *timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES]; 5 // 手動啓動定時器 6 //[timer fire]; 7 8 - (void)nextPage 9 { 10 NSLog(@"nextPage:%ld", self.pageControl.currentPage); 11 12 }
1 - (void)startTimer 2 { 3 // 建立定時器 4 self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES]; 5 // 設置計時器線程的優先級和其餘線程同樣 6 [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes]; 7 }
代碼實現
1 @property (strong, nonatomic ) NSTimer *timer; //計時器
1 // xib 初始化完畢會調用這個方法 2 - (void)awakeFromNib 3 { 4 // NSLog(@"awakeFromNib-----"); 5 6 // 開啓定時器 7 [self startTimer]; 8 }
1 - (void)startTimer 2 { 3 // 建立定時器 4 self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES]; 5 // 設置計時器線程的優先級和其餘線程同樣 6 [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes]; 7 }
1 - (void)nextPage 2 { 3 NSLog(@"nextPage---"); 4 // 下一個頁面,對總數取餘的頁碼,循環滾動 5 NSInteger page = (self.pageControl.currentPage + 1) % self.scrollView.subviews.count; 6 // 計算偏移量,索引值和scrollView寬度的積 7 CGPoint offset = CGPointMake(page * self.scrollView.frame.size.width, 0); 8 // 設置新的偏移量 9 [self.scrollView setContentOffset:offset animated:YES]; 10 }
1 #pragma mark - 定時器 2 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 3 { 4 // 沒有拖動圖片就開始定時器 5 [self startTimer]; 6 } 7 8 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 9 { 10 // 一旦開始拖動就中止計時器 11 [self stopTimer]; 12 }
1 - (void)startTimer 2 { 3 // 建立定時器 4 self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES]; 5 // 設置計時器線程的優先級和其餘線程同樣 6 [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes]; 7 } 8 9 10 - (void)stopTimer 11 { 12 [self.timer invalidate]; // 中止計時器 13 self.timer = nil; //清空指針 14 }
以上步驟結束,scrollView就能夠自動滾動了。oop
雖然能夠自動滾動了,可是不會循環滾動,接下來就研究一下循環滾動的方法。atom