2017-07-06 128 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