Question

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

EDIT:. Je dois ajouter que le contenu ne sont pas des images

entrer image description ici

Merci à l'avance

Était-ce utile?

La solution

Vous allez probablement devoir envisager d'utiliser directement CALayers. NSCollectionView obtient la majeure partie de sa magie de CoreAnimation IIRC, et il semble que vous pourriez avoir à dupliquer une partie de cela. Sinon, vous pouvez essayer d'utiliser la collection imbriquée vues- un groupe contenant, puis chaque groupe contient une autre vue de la collection d'objets.

De toute façon, votre hiérarchie vue / couche va être la même chose. Vous aurez un conteneur de niveau supérieur, qui ne possède qu'une seule colonne (puisque les groupes étendent sur toute la largeur), puis chaque élément dans ce aura un nombre de colonnes, sur la base de la largeur de l'élément. à savoir la vue de votre collection « groupe » articles seront étirer pour remplir la largeur, mais les éléments individuels au sein de ces groupes ne sera pas.

Si vous choisissez d'utiliser l'approche CALayer brute, alors vous aurez envie de regarder CAConstraintLayoutManager. C'est ce qui fournit la magie à l'intérieur NSCollectionView. Un bon endroit pour commencer à chercher des informations à ce sujet le livre de CoreAnimation Bill Dudney de programmeurs pragmatique. Bill maintenant l'évangéliste de la plate-forme officielle pour Apple, donc je pense qu'il est sûr de dire qu'il sait de quoi il parle là-dedans.

Dans l'ensemble, je suggère d'utiliser une approche NSCollectionView imbriquée pour commencer, et regardez vers le bas pour tomber CoreAnimation cru que si la performance semble manquer, ou si vous avez des problèmes à obtenir des choses au travail. L'utilisation NSCollectionView vous permet de garder tous vos NSView-ness actuel en place, il sera donc moins de travail. S'il se avère ok, alors vous êtes à la maison et sec. Sinon, vous avez quelque chose d'autre pour essayer que vous pouvez modifier au contenu de votre coeur.

Autres conseils

Voici un exemple similaire:
entrer image description ici

Vérifiez ceci:

scroll top