Ho impostato un UICollectionView
(con il layout di flusso predefinito e lo scorrimento verticale) con celle personalizzate che vengono caricate da uno xib. Le celle contengono un paio di elementi (uno UILabel
e uno UIView
) con vincoli su di essi. Ho installato i vincoli in modo tale che l'altezza della cella cresce come il testo dell'etichetta altezza aumenta utilizzando il nuovo UICollectionViewFlowLayout
proprietà che è disponibile in iOS 8, estimatedItemSize
:Scorrimento verticale UICollectionView con celle di auto-dimensionamento visualizza solo metà delle celle
layout.estimatedItemSize = CGSizeMake(self.collectionView.frame.width, 100)
Tutto funziona come un fascino tranne c'è un grosso problema : lo UICollectionView
carica solo la metà degli articoli restituiti dal metodo numberOfItemsInSection
. Quindi, quando il metodo restituisce, ad esempio, 10, il mio UICollectionView
visualizza solo 5 celle (ma le visualizza e le espone perfettamente).
Alcuni risultati rilevanti i miei tentativi di debug:
- sono stato in grado di forzare il caricamento degli elementi rimanenti chiamando
invalidateLayout
o modificando il numero di sezioni da 1 a 2. Ma questi sono solo il debug hack. - Separatamente, tutto funziona come un incantesimo quando sostituisco
estimatedItemSize
con la proprietàitemSize
, ad esempio hard-coding della dimensione dell'elemento. Ma ciò sconfigge la funzionalità di auto-ridimensionamento che vorrei implementare.
Suppongo che ci sia qualcosa di sbagliato nel modo in cui sto pensando alle celle autonome. In particolare, mi chiedo se il problema abbia qualcosa a che fare con i vincoli.
Apprezzerei qualsiasi aiuto qui.
Aggiornamento rapido: questo sembra essere un artefatto di bug più pervasivi (o forse scopriremo che sono semplicemente dettagli di implementazione bizzarri) di auto- dimensionamento delle celle in UITableViews e UICollectionViews. Non sono riuscito a presentare un radar contro l'auto-dimensionamento UICV, ma ne ho messo uno per UITableView - https://github.com/rainypixels/SelfSizingCells – rainypixels