UICollectionView n'appelant pas insortingnsicContentSize

J'ai un UICollectionViewController qui génère des cellules avec une couleur random à des fins de test. Maintenant que le UICollectionViewController est incorporé dans un UIScrollView , je veux que le scrollView ait la même taille que contentSize .

J'ai créé une sous-class de UICollectionView , implémenté insortingnsicContentSize méthode insortingnsicContentSize et défini la UICollectionView de UICollectionView sur ma class personnalisée dans IB. Cependant, insortingnsicContentSize n'est jamais appelé. J'ai exactement la même configuration avec un UITableView et là ça fonctionne parfaitement.

Des idées à ce sujet?

 - (CGSize)insortingnsicContentSize { [self layoutIfNeeded]; return CGSizeMake(UIViewNoInsortingnsicMesortingc, self.contentSize.height); } 

Je ne suis pas sûr de ce qui se passe. Voici une autre solution à ce problème. Définissez une contrainte de hauteur sur l'object UICollectionView . Ensuite, définissez sa constant pour qu'elle soit égale à self.collectionView.contentSize.height . J'utilise une approche similaire dans mon application, même si j'ai UITextView au lieu de UICollectionView .

MISE À JOUR: J'ai trouvé un moyen de le faire avec insortingnsicContentSize : UITextView dans UIScrollView en utilisant la layout automatique

La bonne réponse est de faire quelque chose comme ça

 - (CGSize)insortingnsicContentSize { return self.collectionViewLayout.collectionViewContentSize; } 

Et appelez -invalidateContentSize chaque fois que vous pensez qu'il a besoin de changer (après reloadData par exemple).

Dans Interface Builder, vous devrez peut-être définir des contraintes de taille insortingnsèque d'espace réservé pour éviter les erreurs.

Ceci est un sous-classment et un rlocation de -insortingnsicContentSize utile si vous voulez agrandir le cadre d'une vue de collection jusqu'à ce qu'il soit contraint par une vue parentale ou parentale