swift .linear 类型的 iCarousel 自动滚动无限效果
Autoscrolling infinite effect in .linear type of iCarousel in swift
我需要iCarousel中.linear类型的无限自动滚动效果,我已经实现了.cylinder类型的自动滚动,但我无法在.linear类型中实现这种效果。
这是我实现.cylinder类型自动滚动的代码
carousel.type = .linear
carousel.autoscroll = -0.4;
carousel.reloadData()
是的,这在 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
用于轮播数据源获取当前数据
感谢 @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)
}
我需要iCarousel中.linear类型的无限自动滚动效果,我已经实现了.cylinder类型的自动滚动,但我无法在.linear类型中实现这种效果。
这是我实现.cylinder类型自动滚动的代码
carousel.type = .linear
carousel.autoscroll = -0.4;
carousel.reloadData()
是的,这在 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
用于轮播数据源获取当前数据
感谢 @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)
}