Dynamic Height Issue for UITableView Cells (Swift)

前端 未结 25 2648
温柔的废话
温柔的废话 2020-11-28 04:39

Dynamic text of variable length are being injected into tableview cell labels. In order for the tableview cells\' heights to be dynamically sized, I have implemented in

25条回答
  •  南笙
    南笙 (楼主)
    2020-11-28 04:50

    Set automatic dimension for row height & estimated row height and ensure following steps:

    @IBOutlet weak var table: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        // 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
    }
    

    For Example: if you have a label in your UITableviewCell then,

    • Set number of lines = 0 (& line break mode = truncate tail)
    • Set all constraints (top, bottom, right left) with respect to its superview/ cell container.
    • Optional: Set minimum height for label, if you want minimum vertical area covered by label, even if there is no data.

    Here is sample label with dynamic height constraints.

    enter image description here

提交回复
热议问题