向 CollectionView 的 scrollToItem 方法添加闭包

Add a closure to scrollToItem method of CollectionView

提问人:TheTravloper 提问时间:2/28/2020 更新时间:2/28/2020 访问量:144

问:

我有一个“滚动到顶部”按钮,该按钮导航到collectionView的第一个单元格。现在我想在工作完成后隐藏该“滚动到顶部”按钮。请指导我如何做到这一点。

法典:

@IBAction func backToTopClicked(_ sender: Any) {
    self.productCollectionView?.scrollToItem(at: IndexPath(item: 0, section: 0), at: .top, animated: true)
    bBackToTop.isHidden = true
}

上面的代码是有效的,但不是每次都有效。有时我必须单击两次才能隐藏它。因此,我想为方法添加一个闭包,该闭包将通知任务的完成

Objective-C Swift 滚动 UIcollectionView 闭包

评论

0赞 PGDev 2/28/2020
一旦按钮被隐藏,你在哪里再次取消隐藏?
0赞 PGDev 2/28/2020
检查按钮的大小。看看它是否很小并且没有正确使用水龙头。

答:

1赞 Subramanian Mariappan 2/28/2020 #1

尝试

UIView.animate(withDuration: 0.3) {
    self.productCollectionView?.scrollToItem(at: IndexPath(item: 0, section: 0), at: .top, animated: false)
    bBackToTop.isHidden = true
}
0赞 Yosua Hoo 2/28/2020 #2

我认为您可以尝试添加 DispatchQueue,因为任何关于 UI 的代码都应该在主线程上运行

@IBAction func backToTopClicked(_ sender: Any) {
    DispatchQueue.main.async {
        self.productCollectionView?.scrollToItem(at: IndexPath(item: 0, section: 0), at: .top, animated: true)
        bBackToTop.isHidden = true
    }
}

评论

0赞 TheTravloper 2/28/2020
我试过了。然而,我得到了同样的结果。当我滚动到 10-15 个单元格时,它可以工作,但滚动到第 100 个单元格,它不起作用