UICollectionView内容偏移量在应用程序转到后台和旋转设备时的更改

时间:2018-10-18 09:44:43

标签: ios uicollectionview landscape-portrait

我有带有分页的UICollectionView。单元格是屏幕的大小,所以我每页有一个单元格。我已实施collectionView(_ collectionView: UICollectionView, targetContentOffsetForProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint。当设备在前景旋转时,效果很好。 但是,当应用程序转到后台并且设备更改方向并且应用程序回到前台时,已经有两个部分可见的单元格。我需要的是显示到背景之前可见的同一单元格。单元格的大小是正确的。只有偏移量是错误的。我尝试保存最后一个单元格索引,然后再转到背景,然后滚动到前景,但仍然存在问题,如果在后台双击主页按钮以查看打开的应用程序-该应用程序将显示两个部分可见的应用程序细胞。这里是一些代码,但是当应用程序在后台并且设备旋转时,似乎没有调用此代码:

extension SlideshowViewController : UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return collectionView.frame.size
    }

    func collectionView(_ collectionView: UICollectionView, targetContentOffsetForProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint {

        let width = collectionView.frame.size.width
        let visibleCells = collectionView.visibleCells
        if visibleCells.count == 0 {
            return CGPoint.zero
        }
        let cell = visibleCells[0]
        let indexPath = collectionView.indexPath(for: cell)
        let index = indexPath?.item
        let offsetX = CGFloat(index!) * width
        let offsetY: CGFloat = 0
        let offset = CGPoint(x: offsetX, y: offsetY)

        return offset

    }
}

0 个答案:

没有答案