Comment mettre en œuvre les non-défilement UICollectionView à l'intérieur de UIScrollView?
En short, mon choix de présentation de l'écran est en fait un profil d'utilisateur (iOS 7 + Xcode 5). J'ai utilisé UIScrollView comme le plus haut niveau de la vue. La raison en est que je veux que tous ses sous-vues pour faire défiler (les infos de l'utilisateur vue - la vue avec une image de profil et quelques boutons que vous voyez sur l'écran, et la collection de photos de la vue - l'un avec un fond noir) quand il défile.
La région avec un fond noir montrera les photos des utilisateurs. Je me demandais si je pouvais utiliser un UICollectionView ici, ou il ya une meilleure façon de la mettre en œuvre. Le UICollectionView dans ce cas ne devrait pas être capable de faire défiler lui-même, il montre toutes les cellules, tandis que le défilement de travail est géré par le ultrapériphériques UIScrollView.
J'ai lu des messages suivants:
UICollectionView à l'intérieur de UIScrollView
UICollectionView dans UIScrollView -> faire Défiler l'Ordre
iOS 7 de Collecte de Vue à l'intérieur de Défilement de la Vue
Certains ont dit que ce n'est pas possible (ou au moins, bizarre) implemeting UICollectionView à l'intérieur de UIScrollView parce que UIScrollView est UICollectionView de la super-classe qui conduit à un comportement inattendu. Certains ont dit qu'il devrait être mis en œuvre d'une autre façon (mais je n'ai pas vu un clair de suggestion).
oui, vous avez raison, cependant, j'aimerais barres de navigation et onglet barres restent fixes 🙂
OriginalL'auteur Thiem Nguyen | 2014-08-12
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez mettre un
UICollectionView
à l'intérieur d'unUIScrollView
. iOS a entièrement pris en charge imbriquée de défilement de pages vues depuis iOS 3.0, etUICollectionView
est une sous-classe deUIScrollView
. Par exemple, découvrez l'application App Store sur votre appareil iOS. L'écran défile verticalement, c'est soit unUIScrollView
ou unUITableView
(qui est elle-même une sous-classe deUIScrollView
). Et chaque rangée d'icônes défile horizontalement - chaque ligne est uneUICollectionView
.Cependant, il n'est pas clair pourquoi vous besoin de mettre une collecte de vue à l'intérieur d'un défilement de l'affichage. Il semble que vous ne voulez les photos en vue de les faire défiler, il suffit donc de faire de la photos vue être une vue de collection. Pourquoi avez-vous besoin pour mettre l'affichage de la collection à l'intérieur d'un défilement de la vue?
Mise à JOUR
Suffit d'utiliser la vue d'une collection. Définir l'en-tête de la section 0 du profil d'info voir. Vous n'avez pas besoin de faire défiler la vue.
Si vous avez mis toutes les photos en une seule section, vous pouvez configurer l'en-tête dans votre storyboard avec aucun code. Si vous utilisez plusieurs sections, vous aurez besoin de mettre en œuvre
collectionView:layout:referenceSizeForHeaderInSection:
dans votre délégué etcollectionView:viewForSupplementaryElementOfKind:atIndexPath:
dans votre source de données.J'ai mis à jour ma réponse.
une grande installation. J'ai découvert et mis en œuvre de cette façon, à peine une heure auparavant. Votre réponse me rend plus confiant au sujet de la bonne pratique. Merci! 🙂
Que faire si vous voulez que la vue d'en-tête pour être extensible comme un accordéon. Si il est réglé comme une vue d'en-tête de la section 0 de la vue de collection, comment mettre en œuvre l'animation de son expansion et s'effondrer.
Invalider la collection la disposition de l'affichage après le paramétrage de l'indicateur qui signifie que l'en-tête est élargi. Lors du retour de la cellule d'en-tête, vérifiez l'indicateur pour savoir comment configurer la cellule.
OriginalL'auteur rob mayoff