J'ai résolu en utilisant deux UICollectionViewFlowLayout. Un pour le portrait et un pour le paysage. Je les assigne à ma collectionView dinamically dans -viewDidLoad
self.portraitLayout = [[UICollectionViewFlowLayout alloc] init];
self.landscapeLayout = [[UICollectionViewFlowLayout alloc] init];
UIInterfaceOrientation orientationOnLunch = [[UIApplication sharedApplication] statusBarOrientation];
if (UIInterfaceOrientationIsPortrait(orientationOnLunch)) {
[self.menuCollectionView setCollectionViewLayout:self.portraitLayout];
} else {
[self.menuCollectionView setCollectionViewLayout:self.landscapeLayout];
}
Ensuite, j'ai simplement modifié ma collectionViewFlowLayoutDelgate Méthodes comme celle-ci
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
CGSize returnSize = CGSizeZero;
if (collectionViewLayout == self.portraitLayout) {
returnSize = CGSizeMake(230.0, 120.0);
} else {
returnSize = CGSizeMake(315.0, 120.0);
}
return returnSize;
}
Enfin, je passe d'une mise en page à une autre lors de la rotation
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
if (UIInterfaceOrientationIsPortrait(fromInterfaceOrientation)) {
[self.menuCollectionView setCollectionViewLayout:self.landscapeLayout animated:YES];
} else {
[self.menuCollectionView setCollectionViewLayout:self.portraitLayout animated:YES];
}
}
sizeForItemAtIndexPath
avant d'appelerdidRotateFromInterfaceOrientation
. Cependant, pour une vue de collection avec plusieurs cellules à l'écran, l'invalidation de la mise en page avant la rotation provoque un saut de taille méchant et visible avant la rotation de la vue. Dans ce cas, je pense que ma réponse est toujours la mise en œuvre la plus correcte.I would like to adjust the size of each cell to **completely fit the size of the CollectionView**
quelle est exactement la solution proposée dans ma réponse. Si vous pouviez inclure ma solution dans votre réponse et noter quelle approche fonctionne le mieux dans quelles conditions cela me suffirait.