2017-07-06 15 views
0

iCarouselの直線型では無限の自動スクロール効果が必要ですが、シリンダータイプでは自動スクロールしていますが、直線型では実現できません。ここでiCarouselのiCarouselの無限オートエフェクトの無限の効果

は.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