Имам проблем с размера на елемента на 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 да актуализира оформлението?