2016-03-16 26 views
17

Il mio obiettivo è avere un'implementazione Swift di un UICollectionView con contenuto dinamico dove ogni cella contiene parti di una frase. Ogni parte della frase può essere modificata dall'utente. Il problema è che alcune parti di una frase potrebbero essere più lunghe del contenitore stesso. L'utilizzo di sizeToFit non è un'alternativa poiché tutti i contenuti dovrebbero avere le stesse dimensioni per mantenere la leggibilità in tutta la vista di raccolta.Come auto-dimensionare UICollectionViewCell

In questo momento il comportamento che ottenere, quando ho una parte di una frase più lunga del contenitore è il seguente: i puntini di sospensione As you can see the third row has leading ellipsis

Come si può vedere la terza fila è leader.

Quello che vorrei realizzare è la seguente, la parte straripamento del cellulare dovrebbe avvolgere analogamente ad tag span in HTML, in questo modo: The third row wraps

è possibile? Come posso ottenere una cosa del genere?

risposta

1

Per quanto posso dire, è possibile ma complessa - qui ci sono alcune indicazioni su ciò che direi si sta andando ad avere bisogno:

  • 2 tipi di cellule vista collezione supplementari: nel primo , solo i bordi a sinistra sono arrotondati, nel secondo solo a destra
  • Utilizza l'API di base del testo per misurare dove è necessario avvolgere il testo
  • Nella tua origine dati, dovrai riconoscere la situazione prima di te crea le celle e poi invece di creare una singola cella, ne crei due, usando quei nuovi tipi che hai.
+0

come gestirò l'edizione utente quando si hanno due celle per la stessa parte di testo? il blocco dovrebbe crescere/ridursi quando l'utente digita quella parte di testo specifica – Afonso

+0

Questa è una buona idea se si desidera utilizzare UICollectionView. Puoi prenderlo ulteriormente e dividere ogni frase per spazi, quindi nella visualizzazione della raccolta visualizzare una cella iniziale, centrale o finale. –

+0

L'editing in atto può essere un problema e potrebbe funzionare meglio per disegnare le stringhe e le forme su un CGContext. –