Quand est le moment approprié en rotation pour changer les parameters de layout d'un UICollectionView

Espérons qu'une question simple pour un contrôle UIKit relativement nouveau

J'ai un UICollectionView qui a un viewLayout avec une seule ligne de cellules qui sont la hauteur exacte des limites UICollectionView en mode Portrait

Par conséquent, lorsque l'iPad est basculé en mode Paysage, cette ligne devient plus grande que l'écran lui-même, point auquel la layout (presque) échoue silencieusement et se plaint que la ligne est plus grande que les limites.

Quel est le moyen idéal pour manipuler les caractéristiques de viewLayout, en particulier en ce qui concerne la réponse à la rotation dans un ViewController ?

Je travaille sur un problème similaire.

Actuellement, mon UICollectionViewController a deux variables d'instance de UICollectionViewFlowLayout, chacune avec les inserts appropriés pour le portrait ou le paysage.

En rotation, je fais ceci:

 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ if (UIDeviceOrientationIsPortrait(toInterfaceOrientation)) { [_itemCollection setCollectionViewLayout:_portraitLayout]; [_itemCollection reloadData]; } else { [_itemCollection setCollectionViewLayout:_landscapeLayout]; [_itemCollection reloadData]; } } 

Le seul problème que j'ai est qu'il se bloque randomment avec exc_bad_access sur setCollectionViewLayout randomment.

Quelque chose comme ce qui précède pourrait fonctionner pour vous. Je ne suis pas sûr que ce soit la bonne façon de faire les choses. J'ai récemment commencé à utiliser UICollectionViews.