1) Vous pourriez maintenir et d'échanger de multiples objets de mise en page, mais il y a un moyen plus simple. Il suffit d'ajouter les lignes suivantes à votre UICollectionViewController
sous-classe et d'ajuster les tailles selon les besoins:
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
// Adjust cell size for orientation
if (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) {
return CGSizeMake(170.f, 170.f);
}
return CGSizeMake(192.f, 192.f);
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[self.collectionView performBatchUpdates:nil completion:nil];
}
Appelant -performBatchUpdates:completion:
entraînera la nullité de la mise en page et de les redimensionner les cellules avec de l'animation (il vous suffit de passer néant, le bloc params si vous avez pas d'ajustements supplémentaires à effectuer).
2) au Lieu de coder en dur les tailles des éléments en -collectionView:layout:sizeForItemAtIndexPath
, juste diviser la hauteur ou la largeur de la collectionView de limites par le nombre de cellules que vous voulez adapter à l'écran. Utiliser la hauteur si votre collectionView défile horizontalement ou la largeur si elle défile verticalement.