ios - 应用程序转到后台和旋转设备时的 UICollectionView 内容偏移更改
问题描述
我有带有分页的 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
}
}
解决方案
推荐阅读
- python - (Python)Object dict 副本被无故修改
- java - 将 Entity 对象自动转换为 changeSet
- arrays - 获取数组的十六进制值
- mysql - 试图将 Symfony 链接到 mySQL
- integromat - 如何将文件从我的计算机上传到 Integromat 场景?
- pandas - 通过 df.iloc 中的可调用函数每第 n 列获取一段 excel 数据
- python - sklearn RandomForestRegressor 显示的树值中的差异
- azure - Azure devops 在一段时间内更改了工作项列表
- java - 如何更改代码并使用 stream() 代替函数式编程?
- database - 将绑定表单中的输入数据保存到表格中