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.
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. –