Come posso cambiare la dimensione di un UICollectionViewCell
in base alla dimensione delle sue sottoview, usando Auto Layout?Come rendere UICollectionViewCell adatto alle sue sottoview (usando Auto Layout)
I miei UICollectionViewCell
s hanno ciascuno solo una vista nel loro contentView
. Si tratta di una sottoclasse personalizzata di UIView
che si ridimensiona automaticamente per adattarsi a tutte le sue sottoview utilizzando Auto Layout. Implementa anche -intrinsicContentSize
correttamente. Comunque lo UICollectionView
, o meglio il suo layout, non sembra preoccuparsene.
Sto usando un UICollectionViewFlowLayout
, e provato:
- Lasciando la
itemSize
al suo valore di default. Questo mi dà celle con una dimensione di 50 x 50. - Implementazione del metodo delegato
-collectionView:layout:sizeForItemAtIndexPath:
. Tuttavia, quando viene chiamato questo metodo, le celle (ovviamente) non sono ancora apparse sullo schermo e non sono state aggiornate dal sistema di layout automatico.
C'è un modo per modificare le dimensioni delle mie celle in base alle loro sottoview utilizzando le classi Apple standard? O devo implementare la mia sottoclasse UICollectionViewLayout
o qualcos'altro?
Lo stesso principio di http://stackoverflow.com/questions/18477220/have-uitableviewcell-resize-itself-with-autolayout/18481179#18481179, è necessario dare la dimensione in anticipo, purtroppo. – jrturton
L'autore sopra ha un commento sull'utilizzo di una cella "gratuita" - una che si crea e poi si tiene in giro, per popolare e quindi ottenere la dimensione di. Dovresti essere in grado di usare [cell systemLayoutSizeFittingSize: UILayoutFittingCompressedSize] - Ora sto avendo problemi, ma uno di questi dovrebbe funzionare. –