2014-04-17 27 views
9

Sto dimensionando dinamicamente l'altezza di UITextView e l'altezza dello UITableViewCell in cui è incorporato quando il suo contenuto cambia. Ma ho anche la possibilità di incollare in parti di testo predefinite.UITextView non aggiorna il suo contenuto Dimensione

Dato che questo incollare accade a livello di codice, il problema è, che dopo aver aggiunto il bit testo selezionato in testo s' il UITextView e chiamando il mio UITableView di aggiornare i propri altezza delle celle, il UITextView non ha ancora aggiornato il suo contentSize, che io uso per calcolare l'altezza della cella.

C'è un modo per forzare una UITextView ad aggiornare il suo contentSize, dopo che a livello di codice aggiunge del testo ad esso?

+0

Per i futuri spettatori, credo che la vera risposta a questa domanda sia 'textView.sizeToFit()'. Lo sto usando in Swift 2.0 e funziona perfettamente, proprio come richiesto da @dkaisers, a patto che tu stia utilizzando AutoLayout. – kbpontius

risposta

19

È possibile utilizzare sizeThatFits: per ottenere la dimensione corretta.

CGFloat height = ceilf([textView sizeThatFits:textView.frame.size].height); 

Qui è un componente open source popolare che fa uso di esso per ottenere il ridimensionamento dinamico in base al contenuto TextView:   https://github.com/HansPinckaers/GrowingTextView

+1

Grazie, funziona perfettamente! – dkaisers

2

versione Swift della risposta:

var newTextViewHeight = ceil(textView.sizeThatFits(textView.frame.size).height) 
textView.frame.size.height = newTextViewHeight 

Questo un pezzo di codice potrebbe anche rivelarsi utile se si desidera aggiornare la superview dello UITextView

textView.superview?.frame.size.height = textView.contentSize.height + 10 
Problemi correlati