Wenn UITableViewAutomaticDimension
aktiviert das System ruft UITableViewCell
‚s systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority: Methode, um die Zellenhöhe zu berechnen, so dass Sie UITableViewCell
und überschreiben diese Methode Unterklasse kann ein Minimum zu zwingen Höhe für die Zelle, auf diese Weise
class MinHeightTableViewCell: UITableViewCell {
var minHeight: CGFloat?
override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {
let size = super.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: horizontalFittingPriority, verticalFittingPriority: verticalFittingPriority)
guard let minHeight = minHeight else { return size }
return CGSize(width: size.width, height: max(size.height, minHeight))
}
}
und dann
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "minHeightCell", for: indexPath) as! MinHeightTableViewCell
cell.minHeight = 62 // change with your desidered min height
cell.textLabel?.text = "some text"
return cell
}
Der Inhalt Ansicht Größe soll auf dem Tisch Ansicht Verhalten (Stil) und den eigentlichen Inhalt (Subviews) abhängig zu sein. Die Lösung ist einfach: Fügen Sie eine Unteransicht hinzu. –
Was @A-Live scheint die einfachste Lösung zu sein. Sie können eine versteckte Unteransicht hinzufügen, die am oberen und unteren Rand Ihrer Zelle mit einer Höhenbeschränkung fixiert ist (die Breite ist nicht relevant, aber Sie müssen sie irgendwie angeben, um AutoLayout glücklich zu machen). –
Danke, das hat funktioniert (obwohl es keine sehr elegante Lösung ist ...). – nintyapple