【发布时间】:2017-06-29 10:48:30
【问题描述】:
我正在使用UICollectionView 创建一个全屏图片库。当用户旋转设备时,我在
UICollectionView 执行更新
func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
我以模态方式呈现此UIViewController,并让UICollectionView 占据全屏。在viewDidLoad 中,我将流布局创建为:
let flowLayout = UICollectionViewFlowLayout()
flowLayout.scrollDirection = .horizontal
flowLayout.minimumInteritemSpacing = 0
flowLayout.minimumLineSpacing = 0
photosCollectionView.isPagingEnabled = true
photosCollectionView.setCollectionViewLayout(flowLayout, animated: true)
我的尺寸也为:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return photosCollectionView.frame.size
}
当我旋转我的设备时,永远不会调用 viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator),这会导致 UICollectionViewLayout 无法更新。当我旋转设备时,我确实收到了消息:
The behavior of the UICollectionViewFlowLayout is not defined because: the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
我在网上看过可以补充的:
self.automaticallyAdjustsScrollViewInsets = false
到UIViewController,但这没有影响。 UICollectionView 没有内容或部分插图。
我还在函数中调用了super.viewWillTransition。任何人都可以帮助我解决可能导致此问题的原因吗?
【问题讨论】:
-
错误信息涉及“项目高度”。我没有看到您的代码可以确定这一点。可以展示一下吗?
-
我设置大小的时候,就是高度和宽度。我将
sizeForItem设置为IndexPath=photosCollectionView.frame.size。 -
好的,但如果你在错误的时间这么说,我可以想象你可能会得到一个尺寸,其中一个或两个尺寸大于集合视图最终变成的尺寸。
-
使用
UICollectionViewDelegate函数collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize设置。
标签: ios swift uicollectionviewlayout collectionview viewwilltransitiontosize