So erstellen Sie statische Zellen mit dynamischen Zellenhöhen mit Swift

Ich habe mir mehrere Tutorials angesehen, in denen gezeigt wird, wie dynamische Zellenhöhen festgelegt werden. Alle Tutorials zeigen dies jedoch nur, wenn Sie dynamische Zellen verwenden, indem Sie die entsprechenden Einschränkungen festlegen und @ verwendeUITableViewAutomaticDimension. Ich würde dies jedoch gerne für statische Zellen tun.

Ich habe einen Tabellensicht-Controller in meiner App, der mehrere Zellen enthält, die eine Kategorie mit einem Offenlegungsindikator anzeigen, in der ein Titel und dann eine Beschreibung vorhanden sind. Die Größe des Beschreibungstextes variiert. Aus diesem Grund möchte ich, dass die Höhe der Zelle entsprechend der Größe des Beschreibungstextes dynamisch ist.

Der Grund, warum ich statische Zellen und keine dynamischen Zellen verwende, liegt darin, dass ich über den Kategorienzellen einige Zellen mit einigen Designs habe, die ich nur mit statischen Zellen und Storyboarding erhalten konnte.

Ich benutzeiOS9, Xcode 7.3 undSwift 2.2

AKTUALISIERE

Tabelle Controller-Code anzeigen

import UIKit

class CategoriesTableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 140
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplet,e implementation, return the number of rows
        return 2
    }

}

UPDATE 2

Per akzeptierte Antwort unten Ich fügte die beiden folgenden Methoden meinem Table View Controller hinzu und entfernte die 2 Zeilen, die ich in viewDidLoad () hatte. Das hat es für mich getan! Denken Sie daran, dass ich sicherstellen musste, dass alle Beschriftungen in jeder Zelle eine Ober-, Unter-, Vorder- und Hinterbeschränkung verwendeten. Außerdem muss die Anzahl der Zeilen für jedes Etikett auf 0 gesetzt werden.

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage