18

Al momento sto cercando di creare un UICollectionView, che dovrebbe visualizzare un semplice excel-like-spreadsheet, con rows e columns. Questo dovrebbe essere un compito facile con UICollectionViews, ho creduto. E mi piacerebbe davvero realizzare l'implementazione in UICollectionView, non in qualsiasi grid framework.UICollectionView: come definire un UICollectionViewLayout che supporta lo scorrimento orizzontale e verticale?

Ma al momento sono un po 'in sospeso. Quello che ho capito è che purtroppo non posso usare un UICollectionViewDelegateFlowLayout, perché questo supporta solo in ohorizontally o vertically direzione. Ma ho bisogno di scrolling in entrambe le direzioni.

Pertanto Devo usare un UICollectionViewLayout, ma per questo non ho trovato buoni esempi, come usarlo. Qualcuno di voi ha un esempio, come creare una sottoclasse di UICollectionViewLayout per supportare rows e columns?

Grazie in anticipo.

risposta

10
+0

Grazie, quegli esempi mi hanno aiutato molto. Se qualcuno ha un esempio completo di una tabella a scorrimento orizzontale e verticale (implementata in UICollectionView), sentiti libero di postarla qui. – AxM

+6

Ho eseguito la visualizzazione di griglia di base utilizzando UICollectionView con supporto di scorrimento orizzontale e verticale. Questo può aiutarti https://www.dropbox.com/s/qmmzuw35nvz8v36/MyCollectionView.zip – Jirune

+1

Grazie mille per questo @Jirune. Funziona per me, ma è piuttosto lento. Sai come potrei andare a velocizzarlo? Mi chiedo se il codice di intersezione rect è la parte che ho bisogno di ottimizzare. –

7

UICollectionViewFlowLayout sicuramente impossibile - "La disposizione della griglia scorre lungo un solo asse, sia in orizzontale che in verticale."

È una sottoclasse di UICollectionViewLayout. Sembra che tu possa creare la sottoclasse di UICollectionViewLayout e scorrere in entrambe le direzioni.

Cosa intendete per pagina, volete fare il paging come un scrollview? Mi chiedo come utilizzare UICollectionViewFlowLayout in uno UICollectionView per lo scorrimento verticale, all'interno di uno UIScrollView per lo scorrimento orizzontale.

+2

sì perfettamente said..thanks .. –

+0

Sì, lo so già, che devo usare UICollectionViewLayout invece di UICollectionViewFlowLayout ... questo ho postato già nella domanda iniziale. Quindi il tuo commento non ha assolutamente risposto alla domanda, mi dispiace. – AxM

4

ho aggiunto un esempio di utilizzo di un layout personalizzato per implementare un semplice orizzontale & griglia di scorrimento verticale qui https://github.com/neildavis/MyCollectionView

Il mio esempio utilizza PSTCollectionView da quando avevo bisogno di iOS 5 supporto , ma è compatibile API con costruito in UICollectionView. (In realtà utilizza le classi di compatibilità (PSUICollectionView ecc.) Per garantire che usi UICollectionView su iOS 6 e ricada all'utilizzo di PSTCollectionView ecc su iOS 5.) Basta rimuovere il prefisso 'PS' su questi per ripristinare su iOS 6 solo l'implementazione UIKit .

3

risposta che non necessita di sezionare un 3 progetti di esempio

nella sottoclasse UICollectionViewLayout:

  1. Implementare -(CGSize)[collectionViewContentSize] e restituire una dimensione più grande in altezza e larghezza del formato s' il UICollectionView. (Accessibile tramite: self.collectionView.frame.size)
  2. Calcola il layout per il tuo UICollectionViewCell s all'interno della dimensione del contenuto anziché della dimensione del fotogramma.

Nota: assicurarsi che lo scorrimento sia abilitato in UICollectionView. (È attivo per impostazione predefinita.)

2

Avevo bisogno di qualcosa di simile. Ho creato un CollectionViewLayout personalizzato.

https://github.com/akashraje/BidirectionalCollectionViewLayout

+0

Questo ha funzionato perfettamente per me, anche se dovevo fare attenzione con l'ortografia del componente in quanto non viene rilevato automaticamente da Xcode, e un piccolo errore di battitura mi ha fatto girare in cerchio da secoli. – user1702985

+0

Ottimo! Con questa fonte puoi anche implementare una selezione per una fila di elementi. –

Problemi correlati