У меня проблема с размером элемента 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 об обновлении макета?