我知道这是一个很晚的回复,但我也经历过。
在我的视图控制器中,我们称它为MyViewController我有一个UICollectionView
使用自定义UICollectionViewCell
的。我正在实现方法collectionView:layout:sizeForItemAtIndexPath,我在其中返回一个项目大小,该大小取决于UICollectionView
.
MyViewController是在故事板中使用自动布局来控制UIViewController
.
在纵向模式下,单元格看起来很好,但在横向模式下却没有。
UICollectionViewLayout
我通过使我的UICollectionView
内部viewWillLayoutSubviews
方法无效来解决我的问题。
- (void)viewWillLayoutSubviews {
[self.myCollectionView.collectionViewLayout invalidateLayout];
}
早些时候我曾试图使里面的布局无效willAnimateRotationToInterfaceOrientation:duration
,但没有奏效。原因可能是所有视图的尺寸还没有计算出来,所以我们必须等到自动布局完成它的魔力。我指的是这个 SO 线程。
Swift 4.0 更新:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.myCollectionView.collectionViewLayout.invalidateLayout()
}