Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift中线性型iCarousel的自转无限效应_Swift_Xcode_Icarousel - Fatal编程技术网

swift中线性型iCarousel的自转无限效应

swift中线性型iCarousel的自转无限效应,swift,xcode,icarousel,Swift,Xcode,Icarousel,我需要在iCarousel中的.linear类型中实现无限自动滚动效果,并且我已经在.columinal类型中实现了自动滚动,但在.linear类型中无法实现此效果 这是我的实现自动滚动的代码 carousel.type = .linear carousel.autoscroll=-0.4 carousel.reloadData() 是的,在线性的情况下,carousel.type=.linear不起作用,因此您必须为滚动创建一个自己的计时器,如下所示: self.timer = NSTim

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

这是我的实现自动滚动的代码

carousel.type = .linear
carousel.autoscroll=-0.4

carousel.reloadData()
是的,在线性的情况下,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)
    }
}
索引用于获取转盘数据源的当前数据。

是的,在线性的情况下,这不起作用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)
    }
}
索引用于获取旋转木马数据源的当前数据。

感谢@salman的回答借助于salman的回答,我得到了一个无限解的解决方案,当旋转木马类型为线性时,不会出现抖动问题

请按照下面给出的步骤操作

一,。定义句柄滚动的计时器

_=Timer.scheduledTimertimeInterval:4,target:self,selector:selectorself.handleTimer,userInfo:nil,repeats:true

二,。编写转盘的委托方法和处理包裹类型。借助包裹,我们解决了jerk问题

三,。方法来处理滚动

感谢@salman的回答,在salman的回答的帮助下,我得到了一个无限解的解,当旋转木马类型是线性的时,不会出现问题

请按照下面给出的步骤操作

一,。定义句柄滚动的计时器

_=Timer.scheduledTimertimeInterval:4,target:self,selector:selectorself.handleTimer,userInfo:nil,repeats:true

二,。编写转盘的委托方法和处理包裹类型。借助包裹,我们解决了jerk问题

三,。方法来处理滚动


感谢@salman的回答,但在这篇文章中,最后一个项目到达第一个项目时会发生冲动。感谢@salman的回答,但在这篇文章中,最后一个项目到达第一个项目时会发生冲动。
    func handleTimer() {
        var newIndex = self.carousel.currentItemIndex + 1

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

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