J'ai un Je sais que je peux me contourner en appelant: p> mais mettre ce code dans la méthode Je suis heureux de veiller à redimensionner la Sousvishs moi-même si besoin d'être, mais je suis tout à fait nouveau au cacao et je ne peux pas sembler trouver des articles expliquant comment faire une telle chose. Quelqu'un peut-il me dire dans la bonne direction? P> Anthony P> P> NSCollectionview code> contenant une collection de
Custom Views code>. Initialement, il a carré des sous-espions dans des colonnes et des rangées comme une grille. J'ai ensuite défini la propriété
colonnes CODE> de IB à 1, alors cela les affiche simplement l'une après l'autre en rangées. Cependant, même si mon
Customview code> est de 400px de large, il est défini sur AutoFeize, le
NSCollectionview code> est de 400px de large et il est défini sur 1 colonne, les sous-espions sont tirés d'environ 80px de large.
éraftfromnib code> de mon
windowController < / code> définit uniquement la largeur correcte lorsque le programme lance. Lorsque je redimensionnement de la fenêtre (et le
NSCollectionvoirview code> est automatiquement modifié comme indiqué), les valeurs personnalisées restent à leur largeur initialement définie. P>
8 Réponses :
Blog de Matt Gallagher's Merveilleux Cocoa avec amour est à propos de em> pour remédier à ce. Cette semaine, il a partagé les détails de la liaison d'une vue à une colonne comme celle en question: p>
http://cocoawithlove.com/2010/03/Designing -View-with-windings.html p>
Entrée suivante, il promet de partager le reste de la mise en œuvre, ce qui devrait vous donner ce que vous recherchez. P>
(Je dois noter qu'il est sous-classement Nsview directement et réémunération de nombreuses fonctionnalités de Nscollectionview. Cela semble être courant cependant; peu de gens ontime le sous-classement NSCollectionview.) P>
Je sais que c'est une réponse tardif CGFloat width = collectionView.enclosingScrollView.bounds.size.width;
Où est l'ensemble de la largeur?
J'ai essayé de la définir avec éveakfromnib - environ 60% du temps, cela fonctionne - mais étrangement dans l'autre 40% du temps, la ClaquecrollieView a 0 largeur. J'ai l'impression que Xcode est en quelque sorte cache quelque chose et cela finit par restaurer la pointe sans la construire correctement.
La réponse vraie consiste à définir la maxitemise sur 0,0 ( nszerosize code>). Sinon, il est calculé.
[self.collectionView setMaxItemSize:NSZeroSize];
C'est tellement simple et cela fait exactement ce dont j'avais besoin. Les articles de ma vision de la collection redimensionnent maintenant avec la vue de la collection, tout comme j'avais l'intention de l'intention.
Un autre tard, je viens de passer à l'aide d'un Autorésisateur est livré gratuitement, une colonne est facile et elle rend massivement plus rapide. P> NSTableView code> et fournissant un
Nsview code> par la méthode code> p>
permet de dire que vous voulez que votre collectionViewItem d'une taille de 200x180px, vous devez définir:
[myCollectionView setMinItemSize:NSMakeSize(200, 180)]; [myCollectionView setMaxItemSize:NSMakeSize(280, 250)];
Pendant que vous pourriez obtenir une vue de collection pour se comporter comme vous le souhaitez, je pense que vous avez un problème de conception p>
Vous devez utiliser un NSTableView code> et définir des colonnes sur 1 et leur dimensionnement sur quoi que ce soit, mais "aucun".
NSTableView code> est destiné aux données tabulaires, plus il peut recycler les cellules qui permettent une excellente performance pour une grande quantité d'articles.
NSCollectionView CODE> ressemble plus à une disposition linéaire qui organise des éléments dans une grille, avec défilement vertical. Il est utile lorsque le numéro de colonne peut modifier de manière dynamique pour permettre l'affichage de plusieurs éléments à l'écran, généralement en fonction de l'orientation du périphérique et de la taille de l'écran. P>
Il y a 5% de cas où ce n'est pas un problème de conception. Mon cas NSTableView n'aime pas NsdatePicker ses rangées. NsoutLineView fonctionne hors de la boîte.
Je n'ai pas pu obtenir cela pour travailler avec une mise en page par défaut - mais il est assez facile d'implémenter une mise en page personnalisée: alors tout ce dont vous avez besoin est P> var layout=SingleColumnLayout()
collectionView.collectionViewLayout = layout
J'ai essayé toutes les solutions proposées ici et aucun d'entre eux n'a contribué. Si vous utilisez la mise en page de flux (il est utilisé par défaut), vous pouvez l'étendre avec le code suivant et la méthode TIGNFORITEM de la déléguée sera appelé à chaque modification
class MyCollectionViewFlowLayout: NSCollectionViewFlowLayout { override func shouldInvalidateLayout(forBoundsChange newBounds: NSRect) -> Bool { return true } override func invalidationContext(forBoundsChange newBounds: NSRect) -> NSCollectionViewLayoutInvalidationContext { let context = super.invalidationContext(forBoundsChange: newBounds) as! NSCollectionViewFlowLayoutInvalidationContext context.invalidateFlowLayoutDelegateMetrics = true return context } }
J'ai maintenant découvert que je peux définir ma fenêtreController pour être le délégué de la fenêtre et recevoir des notifications de redimensionnement via WindowDidResize. Donc, j'utilise maintenant le code ci-dessus à chaque fois que la fenêtre redimensionne pour définir les tailles d'élément max et min. Cela fonctionne bien au fur et à mesure que la fenêtre se développe, mais pour une raison quelconque l'augmentation de la taille des articles min / max, les limites de la collectionView ne se rétrécissent jamais, même lorsque la fenêtre le fait. Donc, même si la collectionView rétrécit visuellement lorsque je redimensionnez la fenêtre, ses limites ne le font jamais et là pour mes sous-espions ne le font pas non plus!
Avez-vous déjà trouvé un moyen de le faire automatiquement?