2017-09-18 30 views
0

Ich versuche, die Höhe der Tabellenansicht Zelle = den Inhalt der Zelle zu machen.Swift: Dynamische Zelle in der Tabellenansicht

I implementiert diese 2 Zeilen in der viewDidLoad():

tableView.estimatedRowHeight = 200.0 
tableView.rowHeight = UITableViewAutomaticDimension 

and here are the constraints in the cell

Dennoch ist die Zelle ihre Höhe verändert sich!

+0

Was meinen Sie, wenn Sie die Zelle sagen ist ihre Höhe zu ändern? –

+0

Ich meine, dass die Höhe zu klein ist und es sich verhält, als ob ich diese 2 Zeilen nicht hinzugefügt hätte. Der Titel ist das einzige, was in der Zelle erscheint. – mahdi

Antwort

0

Textview nicht erweitern, um die gesamten passen Text standardmäßig, weil es Scroll-Funktionen hat, für was Sie wollen, sollten Sie das Scrollen in der Textansicht deaktivieren.

die Textview auswählen und im Inspektor Registerkarte Scroll-Attribute nach unten und deaktivieren Sie das "Scrolling Aktiviert"

+0

ausgezeichnet das hat für mich funktioniert !! aber was tun für eine Zelle, die ein Bild hat, weil ich das gleiche Problem habe. – mahdi

+0

@mahdi Für eine imageView, die darauf basiert, wie das Bild angezeigt werden soll, können Sie entweder eine Höhenbeschränkung festlegen oder eine Seitenverhältniseinschränkung festlegen –

0

versuchen heightForRowAt indexPath

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {return UITableViewAutomaticDimension} 

+

override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 
+0

Ich habe das versucht und es hat nicht funktioniert. – mahdi

+0

oder versuchen Sie diese zu überschreiben func tableView (_ tableView: UITableView, geschätztHeightForRowAt indexPath: IndexPath) -> CGFloat { zurück UITableViewAutomaticDimension } –

0

es mir zu verwenden scheint, dass das Problem, dass die Höhe des UITextView nicht explizit angegeben werden können. Das natürliche Verhalten der Textansicht ist nicht so groß wie es Inhalt ist.

ich vorschlagen würde eine Höhenbeschränkung innerhalb Interface Builder Zugabe, es bis zu einem Auslaß Einhaken und dann innerhalb der Zelle layoutSubviews Funktion die Höhe wie so Berechnung:

@IBOutlet var textViewHeightConstraint: NSLayoutConstraint! 
func layoutSubviews() { 
    super.layoutSubviews() 
    let fixedWidth = textView.frame.size.width 
    textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) 
    let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) 
    textViewHeightConstraint.constant = newSize.height 
} 
0

In ViewDidLoad

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 200 

Und setzen Sie Ihre beide Titel Label und Text beschriften (Textansicht ersetzen) in eine UIView. und geben Zwänge UIView
1. nachlauf, führenden, unteren und oberen Raum als ZERO
2. Geben Sie als 200 festgelegt und ändern Höhe Relation als größer oder gleich (> =)

Dann geben Constraints zu Titel Label
1. nachlauf, Führung und oberen Raum als ZERO
2. geben Sie als 20 feste Höhe (nach Wahl)

Give beschränkt auf Textbeschriftung
1. nachlauf, das führende, botto m und Kopfraum als ZERO
2. geben feste Höhe wie 180 und ändern Beziehung als Größer als oder gleich (> =)

Verwandte Themen