2016-02-17 57 views
1

如何自動在水平位置使用的NSTimer如何使用NSTimer使UICollectionView自動滾動?

我的工作我下面的項目源滾動UIcollectionView:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.endPoint = CGPointMake(0, self.collectionView.frame.size.width); 
    self.scrollingPoint = CGPointMake(0, 0); 
    self.scrollingTimer = [NSTimer scheduledTimerWithTimeInterval:0.015 target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 

} 

- (void)onTimer { 
    self.collectionView.contentOffset = self.scrollingPoint; 
    if (CGPointEqualToPoint(self.scrollingPoint, self.endPoint)) { 
     [self.scrollingTimer invalidate]; 
    } 
    self.scrollingPoint = CGPointMake(self.scrollingPoint.x+1, 0); 
} 

試着用上面的代碼,但不是爲我工作。

+0

你不應該爲此的NSTimer。 CADisplayLink鏈接到顯示屏,因此可以更好地更新與屏幕相關的事件。這在WWD 2015或WWDC 2014的scrollView會話中得到了很好的解釋。 – Joride

+0

嘗試先設置數據源並將其重新加載到viewdidload中,或嘗試在viewwillappear中嘗試。 然後調用你的定時器 –

回答

0

您應該增加contentOffset.x

self.collectionView.contentOffset = CGPointMake(self.collectionView.contentOffset.x+1, 0); 
0

,如果你想移動到特定的細胞,使用

collectionview.delegate。 didSelectItemAtIndexPath(collectionview,indexPath:要顯示的單元格的索引路徑)

確保在視圖準備好時編寫這段代碼,最好在viewDidAppear()中,以及collectionview的委託不應該爲零。

注意:如果你想在3秒鐘後做到這一點,說出來的話,你需要使用

NSTimer.scheduledTimerWithTimeInterval(3,目標:自我,選擇: 「showTheCellOfInterest」,用戶信息:用戶信息,重複:真)

和寫入方法showTheCellOfInterest內的一段代碼()

3

//夫特-3

var timr=Timer() 
var w:CGFloat=0.0 

override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(true) 

     configAutoscrollTimer() 
    } 

    override func viewDidDisappear(_ animated: Bool) { 
     super.viewDidAppear(true) 

     deconfigAutoscrollTimer() 
    } 

func configAutoscrollTimer() 
    { 

     timr=Timer.scheduledTimer(timeInterval: 0.03, target: self, selector: #selector(dashboard_ViewController.autoScrollView), userInfo: nil, repeats: true) 
    } 
    func deconfigAutoscrollTimer() 
    { 
     timr.invalidate() 

    } 
    func onTimer() 
    { 
     autoScrollView() 
    } 

    func autoScrollView() 
    { 

     let initailPoint = CGPoint(x: w,y :0) 

     if __CGPointEqualToPoint(initailPoint, ticker.contentOffset) 
     { 
      if w<collection_view.contentSize.width 
      { 
       w += 0.5 
      } 
      else 
      { 
       w = -self.view.frame.size.width 
      } 

      let offsetPoint = CGPoint(x: w,y :0) 

      collection_view.contentOffset=offsetPoint 

     } 
     else 
     { 
      w=collection_view.contentOffset.x 
     } 
    } 

//這工作EXC無效

+0

我想滾動圖像一個接一個,我試過你的代碼它自動滾動整個收藏集。我想要一個一個自動scroll.please更新我 – ChenSmile

+0

你可以檢查這個http://stackoverflow.com/q/39158680/2522603。我剛剛從urs複製回答。 – ChenSmile

+1

什麼是ticker.contentOffset? – Phillip