2017-07-06 45 views
0

.linear型iCarousel的自動滾動無限的效果,我需要在iCarousel在.linear型無限自動滾動效果,我已經實現自動滾動在.cylinder類型,但我不能達到.linear型這種效果。在迅速

這是我在.cylinder類型實現自動滾動的代碼

carousel.type = .linear 

carousel.autoscroll = -0.4;

carousel.reloadData() 

回答

0

感謝@salman與薩爾曼的答案的幫助下回答我得到了無限的解決方案的解決方案,而不猛拉問題,當轉盤類型爲線性

請按照以下步驟操作。

1.定義手柄定時滾動

_ = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(self.handleTimer), userInfo: nil, repeats: true)

2.寫輪播的委託方法和處理包裹型保鮮膜的幫助下,我們解決問題的混蛋。

func carousel(_ carousel: iCarousel, valueFor option: iCarouselOption, withDefault value: CGFloat) -> CGFloat { 
     switch option { 
     case .wrap: 
      return 1 
     default: 
      return value 
     } 
    } 

3.方法來處理滾動

func handleTimer() { 
     var newIndex = self.carousel.currentItemIndex + 1 

     if newIndex > self.carousel.numberOfItems { 
      newIndex = 0 
     } 

     carousel.scrollToItem(at: newIndex, duration: 0.5) 
    } 
1

是的,這不起作用在linear的情況下carousel.type = .linear所以你必須做出自己的計時器滾動就像這樣:

self.timer = NSTimer.scheduledTimerWithTimeInterval(6, target: self, selector: #selector(self.handleTimer), userInfo: nil, repeats: true) 

func handleTimer(){ 

    if itemsScroll.count != 0{ 
     if itemsScroll.count-1 == index{ 
      index = 0   
     } 
     else { 
      index += 1 
     } 
    } 
    let x = CGFloat(index) 
    if index == 0 { 
     carousel.scrollToOffset(x, duration: 0) 
    } 
    else { 
     carousel.scrollToOffset(x, duration: 2) 
    } 
} 

index用於獲取的當前數據輪播數據源。

+0

感謝@salman的答案,但在這最後一個項目挺舉之後,當進入第一個項目發生。 – SmarterSusheel