web-dev-qa-db-de.com

Zellenhöhe der Tabellenansicht funktioniert nicht

 enter image description here

Ich habe versucht, die Zeilenhöhe in der Tabellenzellenzelle fest zu codieren. Nach dem Ausführen des Programms sieht es aus wie nur eine Zeile. Ich vermute, es liegt an der Höhe der Zeile der Tabellenansicht. 

Könnten Sie mir bitte sagen, was hier falsch lief?

14
Agung Laksana

In XCode 9 erstellt tableview automatisch geschätzte Zellen basierend auf Autolayout. Da Sie kein Autolayout bereitgestellt haben, erhalten Sie dies.

Sie müssen die geschätzte und automatische Zellengröße deaktivieren, indem Sie tableview auswählen und die beiden Optionen deaktivieren:

 enter image description here

Geben Sie den gewünschten Wert für die Zeilenhöhe ein, und die Zelle wird entsprechend erstellt.

Hoffe das kann helfen.

30
Irfan

Legen Sie die Zeilenhöhe sowie die geschätzte Zeilenhöhe als Automatisch in viewDidLoad() als fest 

table.rowHeight = UITableViewAutomaticDimension
table.estimatedRowHeight = UITableViewAutomaticDimension

Stellen Sie in heightForRowAt: die Höhe als UITableViewAutomaticDimension als ein

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

Hinweis: Legen Sie die Anzahl der Zeilen des Etiketts long restaurant name als 0 fest.

2
luckyShubhra

Fügen Sie diesen Code in Ihr UITableViewDelegate ein

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 100
}
1
Leo

Stellen Sie die folgenden Schritte sicher, um die automatische Bemaßung für das Zellen-/Zeilenhöhenlayout wirksam zu machen. (Hier finden Sie Beispielcode für UILabel und wie Sie die inhaltsspezifische Höhe für Tabellenzellen festlegen.)

  • Zuweisen und Implementieren von DataSource und Delegieren
  • Weisen Sie UITableViewAutomaticDimension rowHeight & geschätzteRowHeight zu
  • Implementieren Sie Delegate/dataSource-Methoden (d. H. heightForRowAt und geben Sie einen Wert UITableViewAutomaticDimension zurück).

-

@IBOutlet weak var table: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Don't forget to set dataSource and delegate for table
    table.dataSource = self
    table.delegate = self

    // Set automatic dimensions for row height
    // Swift 4.2 onwards
    table.rowHeight = UITableView.automaticDimension
    table.estimatedRowHeight = UITableView.automaticDimension


    // Swift 4.1 and below
    table.rowHeight = UITableViewAutomaticDimension
    table.estimatedRowHeight = UITableViewAutomaticDimension

}



// UITableViewAutomaticDimension calculates height of label contents/text
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    // Swift 4.2 onwards
    return UITableView.automaticDimension

    // Swift 4.1 and below
    return UITableViewAutomaticDimension
}

Für die Labelinstanz in UITableviewCell

  • Setze Zeilenanzahl = 0 (& Zeilenumbruchmodus = Ende abschneiden)
  • Legen Sie alle Einschränkungen (oben, unten, rechts links) in Bezug auf den Superview-/Zellencontainer fest.
  • Optional : Legen Sie die Mindesthöhe für das Etikett fest, wenn Sie möchten, dass der vertikale Mindestbereich durch das Etikett abgedeckt wird, auch wenn keine Daten vorhanden sind.

enter image description here

1
Krunal

Wenn Sie diesem Leitfaden folgen, der für mich funktioniert hat, müssen Sie eine Reihe von Einschränkungen hinzufügen und dann wird die Zeilenhöhe automatisch berechnet.

Kurz gesagt, was ich getan habe: (Hinzufügen und Ändern von Einschränkungen sind die beiden rechten Schaltflächen unten rechts in der Storyboard-Ansicht). dann fügte ich alle fehlenden Nebenbedingungen hinzu (eine weitere schöne Option dort) und zuletzt wählte ich die zweite Schaltfläche von rechts und klickte auf alle roten Linien. Sie können dies tun, wenn alle Ansichten gleichzeitig ausgewählt sind. Und dann hat es funktioniert.

0
findusl

Wenn Sie möchten, dass die Zellen entsprechend ihrem Inhalt Platz beanspruchen, müssen Sie UITableViewAutomaticDimension in der Tabellensicht zurückgeben. Delegatmethoden heightForRowAt: und geschätzteHeightForRowAt:

0
Mansi

Sie können dies manuell in Ihrem tableviewdelegate tun:

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