2017-08-03 27 views
0

Ich versuche, die Höhe der UITableViewCell abhängig von der Höhe eines UILabel festzulegen.
Mein Problem ist ähnlich wie this one.
Aber der OC-Code in dieser Antwort scheint jetzt veraltet zu sein (ich bin mir nicht sicher, kann es einfach nicht finden).
Ich verwende den folgenden Code, um die Höhe des Etiketts zu berechnen.Wie berechnet man die Höhe eines UILabel?

extension String { 
    // the length of text in one line 
    func size(ofFont font: UIFont) { 
     return (self as NSString).size(attributes: [NSFontAttributeName: font]) 
} 

In cellForRow: Methode:

let size = text.size(ofFont: font) 
let height = ceil(size.width/(UIScreen.main.bounds.width))*size.height 

Aber es würde zusätzliche Bruchlinie, wenn das letzte Wort zu lang ist, in einer Zeile angezeigt werden soll.
Also, hier kommt der Fehler.
Vielen Dank für einen Vorschlag.

+0

besser verwenden automatische Abmessungen. –

+0

Warum verwenden Sie keine dynamische Zellengröße? –

+0

Sie können Constraint setzen, es ist wirklich einfach – Jaydip

Antwort

3

In Swift 3

set BackgroundView Einschränkung wie führenden, Trailing, oben, unten, bitte Bild anzeigen.

enter image description here

gesetzt UILabel Constraint wie vorangestellten, oben, unten

und setzen es ist Eigenschaft NumberOfLines = 0

enter image description here

und danach Ihre viewController-Klasse ViewDi dLoad Methode schreibe diesen Code.

override func viewDidLoad() { 
     super.viewDidLoad() 
     //dynamic tablview 
     yourTablview.estimatedRowHeight = 83.0 
     yourTablview.rowHeight = UITableViewAutomaticDimension 
    } 

Ich hoffe, es ist Arbeit für Sie.

+0

Meine Antwort ist hilfreich, dann bitte geben Sie upvote und Right – Jaydip

+0

Danke, ich habe bereits die Einschränkungen auf das Etikett gesetzt. 'UITableViewAutomaticDimension' ist alles was ich brauche. Nochmals vielen Dank für Ihre ausführliche Antwort. – JsW

+0

Ich habe ein neues Problem und brauche deine Hilfe. Die Höhe der Sammlungsansicht ist 0, wenn ich UITableViewAutomaticDimension festlege. Die Sammlungsansicht funktioniert gut, wenn ich eine feste Höhe für die Zelle festlege. Die Sammlungsansicht wird vom Storyboard aus paraphiert und in angepasster TableViewCell eingerichtet. – JsW

3

sollten Sie verwenden UITableViewAutomaticDimension

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 140 

Und Sie sollten setzen auch numberOfLines

cell.label.numberOfLines = 0 

Vergessen Sie nicht, Abhängigkeiten zu setzen auf allen Seiten

+0

Danke, 'UITableViewAutomaticDimension' ist alles was ich brauche. – JsW

+0

Ich habe ein neues Problem und brauche deine Hilfe. Die Höhe der Sammlungsansicht ist 0, wenn ich UITableViewAutomaticDimension festlege. Die Sammlungsansicht funktioniert gut, wenn ich eine feste Höhe für die Zelle festlege. Die Sammlungsansicht wird vom Storyboard aus paraphiert und in angepasster TableViewCell eingerichtet. Vielen Dank. – JsW

+0

@CallOfOrange Lass uns das Problem in [dem Chat] lösen (https: //chat.stackoverflow.com/rooms/151072/phyber-and-calloforange) – Phyber

Verwandte Themen