我正在尝试替换 UIcollectionView 上的默认 iOS 设备旋转动画。我在 transitionCoordinator 上使用 viewWillTransitionToSize 和 targetTransform() 来防止默认视图旋转,然后使用变换将每个 visibleCell 旋转到正确的方向。它工作正常,除了:
- 可见矩形直接外部边界上的单元格没有旋转。
- 我的日志显示 collectionView.visibleCells() 数组给了我它应该做的:可见单元格,但我发现如果我让视图以默认动画旋转,则 visibleCells 数组给我可见单元格加上单元格在附近。
- 我一直在尝试访问这些“社区”单元,以便可以旋转它们,但我所有的尝试都失败了。
这是我的 ViewWillTransitionTosize 实现:
override func viewWillTransitionToSize( size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator){
super.viewWillTransitionToSize(size , withTransitionCoordinator: coordinator)
let transf : CGAffineTransform = coordinator.targetTransform()
let invertedRotation = CGAffineTransformInvert(transf)
let currentBounds = view.bounds
coordinator.animateAlongsideTransition({
_ in
self.view.transform = CGAffineTransformConcat(self.view.transform, invertedRotation )
self.undoRotation = CGAffineTransformConcat(self.undoRotation, transf)
self.view.bounds = currentBounds
}, completion: ({ finished in
if ( finished != nil){
UIView.animateWithDuration(0.5, animations: {
for cell in self.collectionView!.visibleCells(){
cell.contentView.transform = self.undoRotation
}
})}
})
)
这是一个快速的 gif。说明问题: http: //www.blessinglopes.com/Info
任何帮助将不胜感激!谢谢!