35 votes

UICollectionView pour Tremplin comme des dossiers

Je suis en train de réaliser l'effet suivant:

Un UICollectionView affiche une grille de cellules pour un type parent de l'objet, de l'e. g. un album photo. Quand je me tape un de ces éléments, je voudrais faire défiler l'élément vers le haut de l'écran et ouvrir un Tremplin comme dossier d'elle. À l'intérieur de cette zone des dossiers, une autre collection devrait être montré, comprenant le détail des articles, j'. e. les photos de cet album. Tapant dans le reste de l' "parent" se ferme à nouveau le dossier. Voir ce schéma:

enter image description here

Ce que j'ai fait jusqu'à présent est un régulier de la vue de collection pour les albums. Lorsque je sélectionne un, il passe à l'élément sélectionné vers le haut, puis utilise JWFolders pour ouvrir un dossier vide à cet endroit. Une fois que c'est indiqué, je déclencher les environs UINavigationController pour pousser mon 2ème-vue-contrôleur avec le détail des articles. Que l'on est jeté hors de sorte qu'il apparaît à l'utilisateur comme si c'était toujours le même point de vue.

Il y a plusieurs problèmes avec cette approche, et je voudrais savoir comment faire mieux:

  1. JWFolders prend une capture d'écran animés et les deux moitiés de vers le haut/vers le bas pour atteindre l'ouverture de l'effet. C'est ok, mais assez lent sur un iPad3, car il se déplace beaucoup de pixels et l'iPad3 du GPU n'est pas tout à fait à la hauteur.

  2. Le 2ème doit être au pixel près pour le match au sommet de la première. C'est le risque de rupture accidentelle.

  3. Je suis limité à ce que les animations sont possibles pour le point de vue du contrôleur de transition. La valeur par défaut UINavigationControllers'pousser à partir de la droite n'est pas convenable. Je remplace que de faire un fondu enchaîné, mais il est encore loin d'être idéale.

Je voudrais obtenir des indications sur la manière d'aborder ce problème dans un maintenable manière qui ne nécessite pas de beaucoup de créativité piratage à l'encontre de ce que les cadres sont conçus pour faire. J'ai peut-être raté quelque chose ici évidente, de sorte que des pointeurs vers des exemples ou des conseils généraux sont appréciés.

Mise à jour:

J'ai changé l'approche un peu. Maintenant, j'utilise un conteneur de-vue-contrôleur qui dispose de deux intégré de collecte de vue des contrôleurs. Pour la "Album" et une pour les "Photos" de la partie du bas. À l'aide d'un UIImageView dans le milieu entre les deux, je peux obtenir le triangle pointant vers le haut fait. Cela est aussi agréable à partir d'un entretien de point de vue, car il facilite l'entretien avec les deux collections traitées de manière totalement séparée.

L'application utilise la Mise en page Automatique, afin que je puisse modifier la quantité d'espace chacun des deux des vues intégrées prend en modifiant les contraintes. C'est de manière plus rapide que la capture d'écran de l'approche fondée sur les JWFolders et fonctionne très bien sur un iPad3 ainsi.

Ce presque me rend là où je veux être. La seule chose qui reste est d'obtenir l'ouverture d'animation de droit. Je voudrais simultanément faire défiler les Albums de collection, de sorte que l'élément taraudé va vers le haut et d'élargir la collection de photos avec le triangle pointant à l'Album de la cellule.

Je peux en quelque sorte "se connecter" la vue du bas de la cellule via des contraintes de mise en forme, de sorte que l' scrollToItemAtIndexPath:atScrollPosition:animated: appel traîne la vue du bas de l'ouvrir?

1voto

Adam Eberbach Points 9587

Pour la contourner, je perdrais la bibliothèque et de la cause iOS afin de déplacer les éléments d'affichage autour de sans des captures d'écran ou d'autres trucs. Sur le robinet, la cause de la taraudés icône pour conserver son apparence normale tout en vous dim de tous les autres. Trouver le contenu de l'affichage de la collection à partir du haut à la fin de la ligne où le taraudé icône. Créer deux nouvelles vues de la collection, qui contient la moitié supérieure, y compris votre taraudés icône et l'un contenant le reste, ci-dessous. Animer ces points de vue, à part pour faire de la place pour l'affichage des dossiers.

L'affichage des dossiers est un autre UICollectionView qui apparaît dans l'espace créé. Dans la vue principale il y a un ou trois points de vue présentés selon que le tiroir est ouvert ou fermé. Je serais probablement sur la création d'une vue contrôleur avec une vue de collection, et à l'aide de-vue-contrôleur de confinement pour gérer tous les trois vues. Vous avez le contrôle complet sur la façon dont ces points de vue sont présentés, de sorte que vous pourriez animer en haut et en bas, vues de haut et bas simultanément à révéler la vue de dossier en place, comme Tremplin n'.

Quand cela fonctionne, alors vous peut généraliser et de commencer à faire des choses comme décider de faire le taraudé icône partie du bas de la collection avec le dossier figurant ci-dessus si l'icône a été faible sur l'écran.

(J'ai hésité à répondre à ce en raison du grand nombre de upvotes pas encore de réponses, donc j'ai peut-être raté quelque chose - mais c'est la façon dont je voudrais commencer à essayer d'atteindre le Tremplin effet.)

0voto

Bensge Points 61

Pour résoudre ce problème d'une façon relativement facile, vous pouvez essayer de faire le dossier d'un simple UICollectionView sous-classe, puis insérez la cellule quand les albums de la cellule est exploité. Dans la collection points de vue de source de données que vous auriez à revenir tailles différentes, etc. pour le dossier de la cellule. Dans le dossier que vous avez créer les dossiers de collecte de vue, éviter de faire le dossier de la cellule de la source de données de la cellule dossier en vue de collection tho.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X