Domanda

Sto iniziando a sviluppare la mia prima applicazione vera e cacao che contiene una visione che vorrei comportarsi (e look) simile a AMWorkflowView di Automator.

Le caratteristiche di base vorrei realizzare:

  • posizionamento di subviews
  • Visualizzazione del subviews in espanso stati / crollati
  • Selezione multipla
  • Drag and drop

Al fine di abituarsi al cacao, ho iniziato con un NSView personalizzato che serviva principalmente come un contenitore per le subviews personalizzati e gestito il loro posizionamento e la selezione multipla. Le subviews sono anche sottoclassi di NSView, e contengono una quantità variabile di vista stessi, come bottoni, etichette e menu a comparsa, e quindi si possono avere altezze diverse. Questo ha funzionato abbastanza bene, ma prima di andare avanti, voglio fare in modo di avere tutto pulito e ordinato secondo il modello MVC.

Ho il sospetto che già c'è una classe in Cocoa che facilita la realizzazione di un contenitore vista, come forse NSCollectionView. Sembra che non ci sia (facile) strada per visualizzare viste diverse dimensioni in un NSCollectionView, però. Devo continuare attuazione mia NSView personalizzato (probabilmente utilizzando un NSArrayController per la selezione e il supporto di ordinamento), o sono modi migliori per andare lì?

Ogni aiuto è molto apprezzato

È stato utile?

Soluzione

Purtroppo la risposta è si dovrà rotolare il proprio. NSCollectionView non permette di oggetti di dimensioni variabili (che esclude anche espansi stati / collassate).

Per un numero limitato di elementi, è possibile raggiungere questo obiettivo piuttosto facilmente (basta una vista contenitore che organizza le subviews correttamente quando viene chiesto di impaginazione, allora avete bisogno di assicurarsi che si ri-layout di quando le cose cambiano). Per molti subviews, però, è necessario fare attenzione ad essere il più efficiente possibile. Questo può iniziare con la posa fuori il meno possibile (solo quelli "dopo" la vista ridimensionata, per esempio) e ottenere così complesso come la memorizzazione nella cache una rappresentazione visiva di una vista del prototipo, disegno le immagini memorizzate nella cache (veloce!) Per tutti, ma la vista essere modificato, e solo utilizzando / posizionando una vista "reale" per la visualizzazione in corso di modifica.

Drag and drop funziona lo stesso come ha sempre fatto, ma nessuno dei conti di cui sopra per la NSCollectionView dell'animazione piuttosto ti dà. :-) E 'veloce e ben animati appunto perché tutti i subviews sono uniformi (in modo che i calcoli di layout sono veloci e semplici). Una volta aggiunto dimensioni irregolari, il problema diventa molto più complicato.

La linea di fondo:. Se avete bisogno di vista variabile dimensioni, NSCollectionView non funzionerà e avrete bisogno di rotolare il proprio codice o trovare qualcun altro condiviso, ma le prestazioni e la bella animazione non sarà facile

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top