如何使用 Timer 在 UITableView 内自动滚动 UICollectionView?
Posted
技术标签:
【中文标题】如何使用 Timer 在 UITableView 内自动滚动 UICollectionView?【英文标题】:How to auto scroll a UICollectionView inside a UITableView using Timer? 【发布时间】:2019-03-28 22:36:55 【问题描述】:我希望我的应用程序中的横幅使用计时器自动滚动。如果集合视图是单独的,我可以执行滚动,但是当我的集合视图位于 tableview 中时,我不知道如何执行。
var r = 0
let t = Timer.init(timeInterval: 2, repeats: true) (timer) in
let index = IndexPath(item: r, section: 0)
cell.cltView.scrollToItem(at: index, at: .left, animated: true)
if r == 6
r = 0
else
r = r+1
我在 cellForRowAt indexPath 中使用此代码,但它似乎不起作用。
【问题讨论】:
【参考方案1】:定时器现在只是初始化了,还没有使用。要开始该过程,您需要添加:-
t.fire()
【讨论】:
我有,但它不工作我只是想知道我应该把这段代码放在哪里。我试过 cellForRowAt 和 cellForItemAt 他们都不起作用【参考方案2】:我通过创建一个函数然后在 cellForItemAt 上调用它来实现我的目标 它解决了我的问题。
func scrollCollection(cltView: UICollectionView)
var r = 0
let t = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) (timer) in
print(r)
let index = IndexPath(item: r, section: 0)
cltView.scrollToItem(at: index, at: .left, animated: true)
if r == 6
r = 0
else
r = r+1
t.fire()
这是我使用的函数,我刚刚调用了它
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
let mainImg = cell.viewWithTag(20) as! UIImageView
mainImg.image = UIImage(named: banners[indexPath.item])
if op
scrollCollection(cltView: collectionView)
op = false
return cell
我放了一个检查标记,这样我就不会一次又一次地调用它。
【讨论】:
我们可以无限滚动吗?因为使用上面的代码它正在滚动,但在到达最后一个索引后它正在移动到第一个索引(这里集合视图滚动到第一个索引)。以上是关于如何使用 Timer 在 UITableView 内自动滚动 UICollectionView?的主要内容,如果未能解决你的问题,请参考以下文章
当为每个 UITableViewCell 运行 Timer 时,它们没有被正确回收
如何在 C# 中创建计时器而不使用 System.Timers.Timer 或 System.Threading.Timer