【问题标题】:CollectionView scroll to topCollectionView 滚动到顶部
【发布时间】:2017-01-22 06:48:12
【问题描述】:

我有一个 CollectionViewController,里面有 10 个单元格。

但是当我运行应用程序时,它会在底部显示单元格,但我想在 viewDidLoad 的顶部单元格中显示它。

我尝试了很多方法,但都没有成功。

如何解决?

【问题讨论】:

  • 请分享您的代码..
  • 我正在使用这个,cocoapods.org/pods/SFFocusViewLayout。 @PoojaSrivastava
  • @KAR 请分享一些代码和你想获得什么类型的collectionviewcell的截图?比如什么问题?
  • 你在使用 Swift 吗?
  • 不,目标 c。 @艾莎

标签: ios objective-c xcode scroll uicollectionview


【解决方案1】:

在 swift 3 中:在 reloadData() 之后

  self.collectionView.setContentOffset(CGPoint(x:0,y:0), animated: true)

【讨论】:

  • 也适用于 Swift 4+
【解决方案2】:

重新加载集合视图后添加此行。

[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:NO];

编辑:

这里只想再补充一点,如果collectionView 数据源有零元素或者是nil,那么上面的代码将不起作用,并且可能会导致您的应用崩溃。

编写条件以检查数据源是否可用!

if (self.dataArray.count > 0) {
    [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:NO];
}

dataArray 是您的数据源。

【讨论】:

  • 如果您觉得这个问题对其他人有帮助,而不是赞成这个问题。 @艾莎
【解决方案3】:

它的工作正常......

collectionView.setContentOffset(.zero, animated: false)

【讨论】:

    【解决方案4】:

    重新加载集合视图后添加这段代码:

    迅速

    yourCollectionView.setContentOffset(CGPoint.zero, animated: true)

    objective-c

    [yourCollectionView setContentOffset:CGPointZero animated:YES];

    【讨论】:

      【解决方案5】:

      斯威夫特 4 斯威夫特 5

      其实就是干活

      collectionView.setContentOffset(.zero, animated: false)
      

      但是,如果您的 CollectionView 实现 .contentInset 或外边距,假设边距顶部和底部设置为 16,则此代码实际上会回到顶部。

      collectionView.setContentOffset(CGPoint(x: 0, y: -16), animated: true)
      

      【讨论】:

        【解决方案6】:

        请试试这个

        [self.yourcollectionview scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:NO];
        

        【讨论】:

        • 在哪里添加这一行? @莫妮卡帕特尔
        • @KAR : 在[self.collectionview reloaddata];之后添加这一行
        • @KAR:请投票给我的答案。如果我的回答对你有用
        • 请对问题进行投票,以便对其他人有所帮助。 @莫妮卡帕特尔
        • 没有。在我将它旋转 180 之前,视图工作正常。所以之后它从底部显示单元格。我翻转视图以将动画效果更改为相反。 @莫妮卡帕特尔
        【解决方案7】:

        使动画选项为假。可能在您的集合视图动画过程中正在运行一些视图动画。

        collectionView.scrollToItem(at: indexPath, at: .top, animated: false)
        

        【讨论】:

          【解决方案8】:

          要在 collectionView 中显示顶部单元格的数据,您可以使用一种方法

          [collectionView setScrollsToTop:YES];
          

          希望对你有所帮助。

          【讨论】:

            猜你喜欢
            • 2017-10-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-02
            • 2010-10-18
            • 1970-01-01
            相关资源
            最近更新 更多