2013-05-02 17 views
5

Ho un UICollectionView che stende le sue celle usando Flow Layout. Scorre verticalmente.UICollectionView il layout della cella è fuori dai limiti della vista dell'insieme

Riempie uno schermo 320x480 e visualizza un UICollectionViewCell personalizzato che è sempre 96 * 96: la dimensione è impostata in Interface Builder e il delegato non implementa i metodi per impostare le dimensioni dell'elemento in base all'oggetto.

Ci sono inserti a sinistra ea destra di 10 px ciascuno e la spaziatura minima è impostata su 6px.

Ciò che accade è quindi 3 celle per linea orizzontale.

< -10-> < ---- 96 ----> < -6-> < ---- 96 ----> < -6-> < ---- 96 --- -> < -10-> = 320.

Il problema che sto avendo è che occasionalmente depone 4 celle su una riga! La quarta cella è principalmente fuori dallo schermo. Quindi rimuove solo 2 celle nella riga seguente per compensare. L'intero punto del layout del flusso è che si tratta di un layout di linea che non dovrebbe mettere nulla fuori dallo schermo!

Ho allegato una foto:

enter image description here

prega di notare che in seconda fila c'è un quarto elemento per lo più fuori dallo schermo.

Non ho davvero idea di cosa potrebbe causarlo. Le celle sono riempite dinamicamente di dati ma la loro dimensione è costante. Le celle su tutte le altre righe si stanno adattando bene quindi non c'è motivo per cui su alcune righe ciò dovrebbe accadere.

Questo errore si verifica in luoghi diversi ogni volta che viene aggiornata la vista raccolta. vale a dire. potrebbe accadere alla riga 2 quindi, una volta che si verifica un aggiornamento, potrebbe accadere alla riga 10 e così via.

La vista raccolta viene aggiornata da un timer. Il timer chiama essenzialmente una funzione che elabora alcuni dati e quindi utilizza dispatch_async (sulla coda principale) una matrice contenente i dati di supporto viene aggiornata e viene chiamato [collectionView reloadData]. Quindi non ho aggiornato la vista della collezione da nessun thread a parte il thread principale. L'array di supporto viene aggiornato solo sulla coda principale e in quella funzione; non da nessun'altra parte.

Per favore qualcuno potrebbe darmi qualche suggerimento su cosa potrebbe andare storto.

Grazie

risposta

Problemi correlati