2016-07-26 18 views
0

Ich habe eine UITableViewCell mit UILabel, die die Höhe korrekt nach Textlänge ändert. Um dies zu erreichen Ich habe Automatisches Layout Einschränkungen richtig eingestellt und angegebenÄndern UILabel Textlänge in UITableViewCell mit dynamischer Höhe nicht die Größe ändern

tableView.rowHeight = UITableViewAutomaticDimension 

Das Problem, das ich habe, ist, wenn der Test der UILabel wird länger nach einer UIButton drücken - mehr dazu, in der Zelle selbst. Ich programmiere programmatisch Text zum UILabel und erwarte, dass die Zellenhöhe wächst. Ich habe hinzugefügt:

self.layoutIfNeeded() 
    self.updateConstraints() 

in der Zelle, aber es funktioniert nicht. Zelle bleibt auf gleicher Höhe.

Ich habe auch eine Neuladung der Zelle Zeile in der Delegierten UIViewController gezwungen, aber es funktioniert auch nicht. Fehle ich etwas Grundlegendes hier?

EDIT: Die Frage unterscheidet sich von anderen ähnlichen Fragen, denn ich möchte die Antwort zu vermeiden, die Höhe manuell berechnen zu müssen. Da AutoLayout in der Lage ist, die korrekte dynamische Höhe beim ersten Laden zu berechnen, sollte es einen Weg geben, die Zelle neu zu zeichnen, sobald der Text im Etikett länger wird, ohne manuelle Berechnungen zur Schätzung der Zeilenhöhe durchführen zu müssen.

+0

Eine Sache machen, IBOutlet von UILabel Height binden und dann diese Konstante aktualisieren.it wird funktionieren –

+0

Mögliches Duplikat von [Ändern der Höhe einer UITableViewCell mit dynamischer Höhe, nachdem sie bereits erschienen ist] (http://stackoverflow.com/questions/35142584/Ändern der Höhe einer dynamischen Höhe-uitableviewcell-after-its-bereits-Appeal – fishinear

+0

Das ist die gleiche Frage, aber die Antwort gibt es nicht, was ich frage, ich will nicht Berechnen Sie die Höhe selbst, noch die geschätzte Höhe. Ich möchte ein AutoLayout-Neuzeichnen erzwingen. –

Antwort

1

Ich habe eine Lösung gefunden, die, nach der Aktualisierung der UILabel Inhalt Ich rufe funktioniert:

UIView.animateWithDuration(0.3) { 
    cell.contentView.layoutIfNeeded() 
} 

zu aktualisieren Zelle Einschränkungen. Und dann die Zellenhöhe, um die Größe:

tableView.beginUpdates() 
tableView.endUpdates() 

Ich warte werde diese Antwort zu akzeptieren, um zu sehen, ob jemand anderes obwohl eine elegantere Lösung beantworten.

1
Get the Label height dynamically and set the tableviewcell height 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Calculate the Label height and add it to default height of the cell 
} 
+1

Eigentlich ist das nicht die Art, wie ich fortfahren möchte, die Zellenhöhe wird automatisch von AutoLayout an erster Stelle berechnet, und sollte auch das zweite Mal, Art eines Neuzeichnens getan werden. –

Verwandte Themen