我遇到了关于collectionView项大小的问题。我想在竖屏模式下显示3个项目,横屏模式下显示6个项目。我已经设置了-layoutSubviews如下:
- (void)layoutSubviews {
[super layoutSubviews];
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait || ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown)) {
//Portrait orientation
self.flowLayoutPortrait.itemSize = CGSizeMake(106, 106);
} else if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight)) {
//Landscape orientation
self.flowLayoutPortrait.itemSize = CGSizeMake(93, 93);
}
[self.collectionView.collectionViewLayout invalidateLayout];
}
但是单元格大小不会更新,对于两种方向都保持不变。如果我创建了2个FlowLayouts并使用:
[self.collectionView setCollectionViewLayout:self.flowLayoutLandscape];
一切都正常,但我真的不喜欢它们被改变的方式。动画效果非常糟糕。由于只需要更新itemSize属性,因此使用1个布局似乎是最好的选择。
我该如何告诉collectionView更新布局呢?
willRotateToInterfaceOrientation:
中添加[collectionView.collectionViewLayout invalidateLayout]
。 - Armands L.