【发布时间】:2016-03-12 00:11:54
【问题描述】:
我创建了一个 UICollectionView,以便我可以将视图排列成整齐的列。我希望在 > 500 像素宽的设备上有一列。
为了实现这一点,我创建了这个函数:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let size = collectionView.frame.width
if (size > 500) {
return CGSize(width: (size/2) - 8, height: (size/2) - 8)
}
return CGSize(width: size, height: size)
}
这在第一次加载时按预期工作,但是当我旋转设备时,计算并不总是再次发生,并且视图并不总是按预期重绘。这是我的设备旋转时的代码:
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
collectionView.collectionViewLayout.invalidateLayout()
self.view.setNeedsDisplay()
}
我假设我忘记重绘某些东西,但我不确定是什么。任何想法都非常感谢!
【问题讨论】:
标签: swift rotation resize uicollectionview