【问题标题】:Autoscrolling infinite effect in .linear type of iCarousel in swift快速在.linear 类型的iCarousel 中自动滚动无限效果
【发布时间】:2017-12-10 13:42:10
【问题描述】:

我需要 iCarousel 中 .linear 类型的无限自动滚动效果,我已经实现了 .cylinder 类型的自动滚动,但我无法在 .linear 类型中实现此效果。

这是我在 .cylinder 类型中实现自动滚动的代码

carousel.type = .linear

carousel.autoscroll = -0.4;

carousel.reloadData()

【问题讨论】:

    标签: swift xcode icarousel


    【解决方案1】:

    是的,carousel.type = .linearlinear 的情况下不起作用,因此您必须像这样创建一个自己的滚动计时器:

    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 用于获取轮播数据源的当前数据。

    【讨论】:

    • 感谢@salman 的回答,但是在最后一项之后,当转到第一项时会发生混蛋。
    【解决方案2】:

    感谢 @salman 在 Salman 的回答的帮助下得到答案,当轮播类型为线性时,我得到了一个无限解决方案的解决方案,而不会出现抽搐问题

    请按照以下步骤操作。

    1.定义手柄滚动的计时器

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

    2。编写轮播的委托方法,并借助 wrap 处理 wrap 类型,我们解决了 jerk 问题。

        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)
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2020-09-17
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多