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
}