我有带有分页的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
}
}