Как сделать пользовательский UITableViewCell с динамической высотой? - PullRequest
0 голосов
/ 10 июня 2018

Моя цель - создать такой экран:

enter image description here

Это экран, который я реализовал с помощью StackView и Labels.Но теперь я хочу сделать это с помощью UITableView.Моя проблема в том, что клетки должны быть динамическими.Потому что текст может отличаться от других.Итак, я начал создавать UITableViewCell с вашим xib-файлом (задний серый для дизайна)

enter image description here

Swift file

class CellCreateSaleVC: UITableViewCell {


    @IBOutlet weak var lblInfo: UILabel!
    @IBOutlet weak var imgClipboard: UIImageView!
    @IBOutlet weak var lblNomeCampo: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)


    }

}

ViewController с UITableView

class CreateSaleViewController : UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var tableViewMenu: UITableView!
    let options : Int = 12


    override func viewDidLoad() {

        tableViewMenu.dataSource = self
        tableViewMenu.delegate = self
        tableViewMenu.register(UINib(nibName: "CellCreateSaleVC", bundle: nil), forCellReuseIdentifier: "CellCreateSale")

    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return options
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CellCreateSale") as! CellCreateSaleVC
        return cell
    }

}

Но мой результат таков: enter image description here

1 Ответ

0 голосов
/ 10 июня 2018

Для динамической высоты TableViewCell необходимо использовать ячейки табличного представления с самоопределением размера , для свойства rowHeight представления таблицы необходимо установить значение UITableViewAutomaticDimension.Необходимо также присвоить значение свойству estimatedRowHeight.

tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableViewAutomaticDimension

Чтобы определить высоту ячейки, добавьте ограничения к представлениям ячеек от нижнего края.Если ваши представления имеют внутреннюю высоту содержимого, система использует эти значения.Если нет, необходимо добавить соответствующие ограничения по высоте либо к представлениям, либо к представлению содержимого.

enter image description here

Примечание:

Кроме того, постарайтесь сделать расчетную высоту строки максимально точной.Система рассчитывает такие элементы, как высота полосы прокрутки, на основе этих оценок.Чем точнее оценки, тем более плавным становится пользовательский опыт.

См. этот превосходный ответ о переполнении стека для использования автоматического размещения для динамических высот ячеек.и raywendelich.com учебник по самостоятельному определению размеров ячеек таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...