2011-03-20 5 views
9

Je voudrais créer un NSCollectionView similaire à celui d'iPhoto '11. Je veux regrouper plusieurs images dans la section et créer un en-tête de section. L'en-tête de section d'une section spécifique est toujours visible jusqu'à ce que le dernier élément de cette section soit visible. Vous pouvez jeter un oeil à l'image pour voir ce que je veux dire.NSCollectionView avec des sections - comme dans iPhoto

EDIT: Je devrais ajouter que le contenu n'est pas une image.

enter image description here

Merci à l'avance

Répondre

2

Vous allez probablement devoir envisager d'utiliser directement CALayers. NSCollectionView tire la majeure partie de sa magie de CoreAnimation IIRC, et il semble que vous ayez à en dupliquer certaines. Vous pouvez également essayer d'utiliser des vues de collection imbriquées, l'une contenant des groupes, puis chaque groupe contenant une autre vue de collection d'éléments individuels. Dans tous les cas, la hiérarchie de vue/couche sera la même. Vous aurez un conteneur de premier niveau qui n'a qu'une seule colonne (puisque les groupes s'étendent sur toute la largeur), alors chaque élément dans celui-ci aura un nombre quelconque de colonnes, en fonction de la largeur de l'élément. c'est-à-dire que vos éléments de vue de collection de groupe s'étendront pour remplir la largeur, mais pas vos éléments individuels dans ces groupes.

Si vous choisissez d'utiliser l'approche CALayer brute, alors vous voudrez regarder CAConstraintLayoutManager. C'est ce qui fournit la magie à l'intérieur NSCollectionView. Un bon endroit pour commencer à chercher des informations à ce sujet est Bill Dudney's CoreAnimation book from Pragmatic Programmers. Bill est maintenant l'évangéliste officiel de la plate-forme pour Apple, donc je pense qu'il est sûr de dire qu'il sait de quoi il parle là-bas. Dans l'ensemble, je suggérerais d'utiliser une approche imbriquée NSCollectionView pour commencer, et envisager de descendre à CoreAnimation brut seulement si les performances semblent manquer, ou si vous avez des problèmes pour faire fonctionner certaines choses. L'utilisation de NSCollectionView vous permet de garder votre NSView -ness en place, ce qui signifie moins de travail. Si cela se passe bien, alors vous êtes à la maison & sec. Si non, vous avez quelque chose d'autre à essayer, que vous pouvez ajuster au contenu de votre coeur.

+0

NSCollectionView n'aime pas son pas tout être la même hauteur, de sorte que des vues de collection imbriquées ne fonctionnera probablement pas à moins que vous n » Ne vous occupez pas du défilement. –

-3
+0

Cet exemple concerne NSTableView qui n'est pas du tout lié à NSCollectionView. – McZonk

+0

@McZonk Oui, il s'agit de NSTableView. Parce que pour autant que je sache, vous ne pouvez pas créer une vue semblable à iphoto en utilisant NSCollectionView. utilisez donc NSTableView avec la section, et créez votre propre collectionView. – kilik52

+0

En utilisant NSTableView, vous perdez beaucoup de flexibilité qu'offre NSCollectionView. Peut-être que https://github.com/phranck/CNGridView/ vaut la peine d'essayer? – McZonk

Questions connexes