Ho una vista di raccolta con un layout di flusso personalizzato e molte celle diverse di altezza diversa. La larghezza della vista di raccolta cambia in base alla rotazione del dispositivo, pertanto la larghezza delle celle deve essere modificata di conseguenza. Perché funzioni, ho implementato il metodo "sizeForItemAtIndex" e restituisco diverse dimensioni a seconda dell'orientamento dell'interfaccia corrente. La maggior parte delle celle non modifica la loro altezza, tuttavia, c'è una cella che voglio espandere e comprimere ogni volta che l'utente lo tocca. Puoi supporre che la cella abbia solo un UILabel con una o più righe di testo. Quando la cella viene visualizzata per la prima volta, il numero di linee è impostato su 1 e quando l'utente tocca la cella il numero di linee è impostato su 0, e qui la cella deve utilizzare la dimensione intrinseca dell'etichetta per cambiare automaticamente l'altezza . Come posso ottenere questo effetto? Ecco un esempio di quello che dovrebbe essere simile: UICollectionViewCell espandi/comprimi con le dimensioni intrinseche
risposta
procedere come segue:
1). Creare una variabile booleana denominata isExpanded
per gestire espansione/compressione
2.) Aggiungi un bersaglio e di azione per lo spettacolo più tasto
[yourCellName.btnShowMore addTarget:self action:@selector(ShowMoreButtonClicked) forControlEvents:UIControlEventTouchUpInside];
3.) In sizeForItemAtIndexPath per la gestione di altezza, aggiungere:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
if (isExpanded && indexPath.row == 0) {
return CGSizeMake(CGRectGetWidth(self.view.frame), calculated height for the expanded cell);
}
return CGSizeMake(CGRectGetWidth(self.view.frame), default height);
}
4.) Quindi nel metodo ShowMoreButtonClicked
- (void)ShowMoreButtonClicked{
if (isExpanded) {
isExpanded = FALSE;
[collection_viewCus reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]]];
}
else {
isExpanded = TRUE;
[collection_viewCus reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]]];
}}
5.) Aggiungi questa linea nel vostro cellForItemAtIndexPath
[yourCellName layoutIfNeeded];
6.) costruire & run
Ben fatto, ho passato la notte scorsa a capire questo e ho detto "Risponderò domani" e boom, eccolo – MoMo
C'è un modo per consentire al layout automatico di calcolare automaticamente l'altezza? – almas
sì, restituisci questa dimensione per la cella: - CGSize CellSize = [yourCell systemLayoutSizeFittingSize: UILayoutFittingCompressedSize conHorizontalFittingPriority: UILayoutPriorityDefaultHigh verticalFittingPriority: UILayoutPriorityDefaultLow]; – Mihawk
La risposta precedente è buona, ma se volete un po 'di animazione è necessario fare questo tre fasi:
1.Invalidate tua collectionViewLayout
self.collectionView.collectionViewLayout.invalidateLayout()
2.Reload desiderato indexPath o tutti i dati all'interno di un blocco performBatchUpdates
collectionView.performBatchUpdates({
self.collectionView.reload(at: DESIRED_INDEXPATH)
}, completion: nil)
3.Return la nuova altezza calcolato metodo sizeForItemAtIndexpath
delegato
- 1. UICollectionViewCell di grandi dimensioni scompare con layout personalizzato
- 2. RyuJIT non utilizza completamente le intrinseche SIMD
- 3. Come posso ottenere l'autolayout per sovrascrivere le dimensioni intrinseche di UIImageView?
- 4. Qual è la differenza tra le dimensioni intrinseche e i vincoli di larghezza/altezza del sistema?
- 5. Computing x^y con intrinseche GCC vettore
- 6. SSE, intrinseche e allineamento
- 7. Definizione di UICollectionViewCell con pennino
- 8. costante fuori campo con intrinseche NEON
- 9. Come auto-dimensionare UICollectionViewCell
- 10. Routine intrinseche non documentate
- 11. UICollectionViewCell Shake
- 12. Come utilizzare UILongPressGestureRecognizer con UICollectionViewCell in Swift?
- 13. UICollectionViewCell Layout automatico
- 14. Come incorporare l'assembly LLVM o le intrinseche nel programma C con Clang?
- 15. Come creare un'ombra per UICollectionViewCell
- 16. UICollectionView in a UICollectionViewCell
- 17. UICollectionViewCell Border/Shadow
- 18. UICollectionViewCell shadow color
- 19. Animate UICollectionViewCell on Tap
- 20. swift positionate center UICollectionViewCell
- 21. Forza le immagini alle dimensioni con Bootstrap
- 22. Come trovare le coordinate di UICollectionViewCell relative alla finestra dell'applicazione
- 23. iOS: UICollectionViewCell si regola automaticamente in base alle dimensioni dello schermo
- 24. Perché le dimensioni dei blocchi Unix aumentano con le dimensioni della memoria più grandi?
- 25. UIScrollView all'interno di UICollectionViewCell non funziona
- 26. Come impostare UICollectionViewCell Width e Height a livello di programmazione
- 27. get touch location di uicollectionviewcell
- 28. Perché un UICollectionViewCell con un UIButton ha un'immagine monocromatica/colorata?
- 29. Problema con le dimensioni dei caratteri con iPhone
- 30. Modifica la dimensione di UICollectionViewCell su diversi orientamenti del dispositivo
Puoi aggiungere quello che hai provato finora e quali risultati che stai ricevendo? – MoMo