2010-06-25 4 views
1

Je souhaite disposer plusieurs lignes de NSViews. Chaque rangée commencera par dire 5 NSViews avec la possibilité d'ajouter ou de supprimer arbitrairement des vues entre l'un des 5 premiers, au début ou à la fin.Cocoa: lier par programme NSViews les uns aux autres pour rendre la mise en page simple?

1) Comment puis-je les disposer sans que je doive suivre manuellement la taille de chacun et calculer et placer chacun d'eux? Comment puis-je dire "NSView2 est à droite de NSView1 avec un écart de 10 pixels"?

2) Quelle structure de données est logique de conserver ces vues et de maintenir le plus simplement les relations positionnelles via Cocoa? Aussi, je dois revenir à la fin et parcourir de gauche à droite dans cette liste.

Répondre

0

Si toutes vos vues sont de taille homogène, utilisez NSCollectionView/Item. Sinon, il n'y a vraiment aucune option pour vous mais pour maintenir la grille (et le mécanisme de pavage) vous-même. Si vos vues "flux" ou "enveloppement" (c'est-à-dire, insérer une vue dans la rangée 2 pousse la dernière dans la rangée 2 à la première position dans la rangée 3), vous devez faire votre mise en page à partir de moins de la position d'insertion dans le meilleur des cas. Si vos vues ne sont pas envelopper, alors c'est beaucoup plus facile. Vous n'avez qu'à refaire la mise en page pour cette ligne (et vraiment, combien de vues vous attendez-vous dans une rangée? Si c'est trop de mettre en page rapidement, votre conception devrait vraiment être reconsidérée), à ​​partir de l'index d'insertion.

Si vous souhaitez plus de détails, vous devez spécifier exactement comment votre disposition doit se comporter.

Questions connexes