【问题标题】:Auto Scroll to Top自动滚动到顶部
【发布时间】:2018-08-31 05:09:36
【问题描述】:

我可以让它在打开应用程序时自动滚动到顶部,但现在它不会让你再滚动了,因为 scrollView 由于willDisplay 而强制将它保持在顶部。

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
    if info.count > 0 {
        collectionView.scrollToItem(at: IndexPath(item:info.count - 1, section: 0), at: .top, animated: false)
    }
}

我还能把它放在哪里?

【问题讨论】:

  • 您可以从 willDisplay 方法中删除此代码,并在重新加载集合视图后将其放在下方,使其仅滚动到顶部一次。

标签: ios swift uiscrollview uicollectionview autoscroll


【解决方案1】:

使用以下代码来实现您的需求。对于动画,您只需在 scrollToRow 函数的动画中传递值 true/false。 希望对您有所帮助!

在没有动画的情况下滚动顶部

func scrollToTopWithoutAnimation() {
     DispatchQueue.main.async {
         if self.dataArray.count > 0 {
             let indexPath = IndexPath(row: 0, section: 0)
             collectionView.scrollToItem(at: indexPath, at: .top, animated: false)
         }
     }
}

用动画滚动到顶部

func scrollToTopWithAnimation() {
     DispatchQueue.main.async {
         if self.dataArray.count > 0 {
             let indexPath = IndexPath(row: 0, section: 0)
             collectionView.scrollToItem(at: indexPath, at: .top, animated: true)

         }
     }
}

【讨论】:

  • 基于@NikunjKumbhani 评论和您的回答,我能够弄清楚谢谢
【解决方案2】:

collectionView 重新加载后试试这个

DispatchQueue.main.async {
    self.collectionView.scrollsToTop = true
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    相关资源
    最近更新 更多