Как динамически изменить размеры ячеек таблицы и высоты таблицы - PullRequest
0 голосов
/ 24 декабря 2018

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

Может кто-нибудь помочь мне с подходом о том, как установить высоту табличного представления в соответствии с высотой ячейки табличного представления

class Recent_WH_acitivityCell: UITableViewCell {

@IBOutlet weak var wh_activity_tableView: UITableView!
@IBOutlet weak var wh_activity_table_ht: NSLayoutConstraint!

let cells = 2
var maxHeight: CGFloat = UIScreen.main.bounds.size.height
override func awakeFromNib() {
    super.awakeFromNib()
    wh_activity_tableView.estimatedRowHeight = 100
    wh_activity_tableView.rowHeight = UITableViewAutomaticDimension
}

func setData()
{
    wh_activity_tableView.reloadData()
    self.layoutIfNeeded()
}

override var intrinsicContentSize: CGSize
{
    let height = min(self.contentView.frame.height, maxHeight)
    return CGSize(width: self.contentView.frame.width, height: height)
}
override func layoutSubviews() {
    super.layoutSubviews()
    self.contentView.frame = UIEdgeInsetsInsetRect(contentView.frame, UIEdgeInsets(top: 0, left: 0, bottom: 15, right: 0))
}}

extension Recent_WH_acitivityCell : UITableViewDataSource{

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

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

Вот снимок экрана

Пожалуйста, посмотрите на выделенную часть.

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Вы можете реализовать самоопределение размера UITableView следующим образом:

class SelfSizingTableView: UITableView {

    override var intrinsicContentSize: CGSize {
        return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
    }

    override var contentSize: CGSize {
        didSet {
            invalidateIntrinsicContentSize()
        }
    }

}

Убедитесь, что правильно установлены ограничения ячейки (полные ограничения сверху вниз и ниже ячейки) и активированыразмер ячеек в вашем контроллере вида, как это:

@IBOutlet weak var tableView: UITableView! {
    didSet {
        tableView.estimatedRowHeight = 44
        tableView.rowHeight = UITableView.automaticDimension
    }
}
0 голосов
/ 24 декабря 2018

Назначить ограничение выравнивания сверху и снизу для родительского представления.а затем используйте один вызов в качестве ячейки заголовка, например «Продать свой запас», и используйте ячейку в качестве обычной ячейки в разделе, чтобы вы могли получить надлежащий вывод в соответствии со своим требованием.

Также назначьте ограничение по высоте, IBOutlet и вычислите числоячейка * высота ячейки + высота заголовка = ограничение высоты табличного представления

И затем установите соответственно UIScrollview contentsize.

Например, высота одной ячейки равна 80, а количество ячеек 5 затем размер содержимого прокруткиis = высота другого элемента + высота заголовка + (80 * 5) ограничение высоты просмотра таблицы is = высота заголовка + (80 * 5)

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