Comment implémenter UICollectionView non-scrollable dans UIScrollView?

En short, ma disposition d'écran souhaitée est essentiellement un profil user (iOS 7 + Xcode 5). J'ai utilisé UIScrollView comme vue de niveau supérieur. La raison en est que je veux que toutes ses sous-vues défilent (vue d'infos user – la vue avec une image de profil et quelques buttons que vous voyez sur l'écran, et la vue de collection de photos – celle avec fond noir).

entrez la description de l'image ici

La région avec un fond noir affichera les photos de l'user. Je me request si je pourrais utiliser un UICollectionView ici, ou s'il y a une meilleure façon de l'implémenter. L'UICollectionView dans ce cas ne devrait pas être capable de défiler lui-même, il montre juste toutes les cellules, tandis que le travail de défilement est géré par le UIScrollView le plus externe.

J'ai lu les messages suivants:

UICollectionView à l'intérieur de UIScrollView

UICollectionView dans UIScrollView -> Ordre de défilement

iOS 7 Collection Voir à l'intérieur Voir défilement

Certains ont dit qu'il n'est pas possible (ou du less, étrange) d'implémenter UICollectionView dans UIScrollView parce que UIScrollView est la superclass de UICollectionView qui conduit à un comportement inattendu. Certains ont dit qu'il devrait être mis en œuvre d'une autre manière (mais je n'ai pas vu de suggestion claire).

Oui, vous pouvez mettre un UICollectionView dans un UIScrollView . iOS prend totalement en charge les vues de défilement nestedes depuis iOS 3.0 et UICollectionView est une sous-class de UIScrollView . Par exemple, consultez l'application App Store sur votre appareil iOS. L'écran défile verticalement – c'est soit un UIScrollView ou un UITableView (qui est lui-même une sous-class de UIScrollView ). Et chaque rangée d'icons défile horizontalement – chaque rangée est un UICollectionView .

Cependant, il n'est pas clair pourquoi vous devez placer une vue de collection dans une vue déroulante. Il semble que vous ne souhaitiez que faire défiler les photos, il vous suffit donc de faire en sorte que l'affichage des photos soit une vue de collection. Pourquoi avez-vous besoin de placer la vue de collection dans une vue de défilement?

METTRE À JOUR

Utilisez simplement une vue de collection. Définissez l'en-tête de la section 0 sur l'affichage des informations de profil. Vous n'avez pas besoin d'une vue de défilement.

Si vous mettez toutes les photos dans une section, vous pouvez configurer l'en-tête de votre storyboard sans code. Si vous utilisez plusieurs sections, vous devez implémenter collectionView:layout:referenceSizeForHeaderInSection: dans votre délégué et collectionView:viewForSupplementaryElementOfKind:atIndexPath: dans votre source de données.