【发布时间】:2015-01-05 14:14:15
【问题描述】:
我正在尝试替换 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
任何帮助将不胜感激! 谢谢!
【问题讨论】:
-
你有没有上传过代码,我可以试试看有什么问题?
-
抱歉@rakeshbs,我没有在线代码,但它是使用常规collectionViewFlowLayout 的简单collectionView。唯一的自定义功能是在 ViewWillTransitionToSize 中编码的旋转动画。
-
@rakeshbs 我准备一个样例项目放到网上
-
@rakeshbs 这是一个带有工作 Xcode 示例的 zip:files.cargocollective.com/518889/swift-collectionview.zip
标签: ios swift viewwilltransitiontosize