HeightForRowAt и предполагаемый HeightForRowAt в iOS - PullRequest
0 голосов
/ 27 августа 2018

У меня есть 2 таблицы в одном ViewController.Высота ячейки обоих таблиц различна.

При первом просмотре таблицы я вычисляю с помощью heightForRowAt метода делегата, потому что в этой таблице содержимое ячейки является статическим.Во-вторых, через estimatedHeightForRowAt метод делегата, потому что в этой таблице содержимое ячейки представляет собой текст (который может быть маленьким или большим).

Таким образом, проблема заключается в том, что второе представление таблицы высотой ячейки исправлено 58. Оно не увеличивается при большом отображении текста.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if tableView == tblHistory{
        let h = ((tableView.frame.size.width - 16) * 7 / 5) + 74
        return h
    }
    else{
        return 58
    }
}

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    if tableView == tblHistory{
        let h = ((tableView.frame.size.width - 16) * 7 / 5) + 74
        return h
    }
    else{
        return 58
    }
}

Примечания : Я правильно установил все ограниченияизменить размер ячейки зависит от текста.

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Лучшим решением является вычисление высоты для обоих текстов одним и тем же методом в heightForRowAt :

func heightForText(string: String, width: CGFloat, font: UIFont) -> CGFloat {
    let attrString = NSAttributedString(
        string: string,
        attributes: [NSFontAttributeName: font])
    let size = attrString.boundingRect(
    with: CGSize(width: width, height: CGFloat.greatestFiniteMagnitude), 
    options: NSStringDrawingOptions.usesLineFragmentOrigin, context: nil)
    return size.height
}
0 голосов
/ 27 августа 2018

Если ваши ограничения установлены правильно, вам не нужно рассчитывать высоту.Просто верните UITableViewAutomaticDimension для обоих представлений таблицы.

0 голосов
/ 27 августа 2018

проблема в том, что высота текстовой ячейки исправлена.Это не увеличивается при большом отображении текста.

Вы действительно должны иметь совершенство в своих ограничениях в ячейке раскадровки.

На самом деле естьмного знать.Вам нужно будет показать (скриншот) раскадровку ячейки и показать все вертикальные ограничения, связывающие UILabel и другие элементы.

Вообще говоря, вы не должны «фиксировать» высоту UILabelили общая «цепочка», включающая UILabel.Если вы сделаете это правильно, будет работать неявная высота.

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