2015-09-10 4 views
7

Ho un UITextView in un TableViewCell e utilizzo l'approccio iOS 8 fornito UITableViewAutomaticDimension nell'elenco here.Come aggiornare l'altezza della cella con UITableViewAutomaticDimension?

Se l'utente aggiunge una nuova riga a UITextView e così textView, l'altezza della cella dovrebbe aumentare, come posso aggiornare l'altezza?

provato:

cell.layoutIfNeeded() 
cell.setNeedsUpdateConstraints() 

Questi non funziona.

Se ricarico delle cellule, come

tableView.reloadRowsAtIndexPaths([iindexPath], withRowAnimation: .None) 

questo funziona, ma poi ho bisogno di trattare con dimettersi e spettacolo tastiera. Lo eviterei. Qualche soluzione?

risposta

0

Dopo qualche tempo textView inizierà lo scorrimento per aumentare l'altezza sulla nuova riga in qualsiasi momento è necessario implementare il metodo textViewDidChangeText: e aumentare la sua altezza calcolando l'altezza per il testo.

Per utilizzare UITableViewAutomaticDimension è necessario aggiungere vincoli per subviews da cima a fondo, penso che si dovrebbe anche creare e IBOutlet per vincolo di altezza textView e impostare il valore costante textViewDidChangeText metodo, in questo caso tableViewCell altezza cambierà dinamicamente.

+0

Se fisso vincolo altezza, si fermerà UITableViewAutomaticDimension lavorare –

+0

quindi aumentare la sua altezza impostando il telaio –

+0

giù in basso la soluzione che modifica l'altezza –

6

necessità di aggiungere seguente metodo:

func textViewDidChange(textView: UITextView) { 

    tableView.beginUpdates() 
    tableView.endUpdates() 
} 

aggiornerà vincoli senza ricaricare Tableview

+0

Questa risposta funziona senza ricaricare la vista tabella. Testato su iOS9. – nacross

+0

Funziona anche quando si modifica il vincolo di altezza di una ** vista **, invece di una vista testo. Testato in * iOS10 *. – Thecafremo