текстовая метка ячейки не центрируется после изменения высоты ячейки - PullRequest
0 голосов
/ 23 апреля 2019

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

Однако после обновления высоты мойтекстовая метка находится в верхнем левом углу, а не вертикально в середине.Вот так:

==================         =====================
label                =>    label
==================         

                           =====================

Кто-нибудь знает, как это исправить?

Редактировать

Код для изменения высоты:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    var rowHeight=44.0
    var numOfLines = 1;
    if let cell = tableView.cellForRow(at: indexPath),let label = cell.detailTextLabel, let size = label.text?.size(withAttributes: [NSAttributedString.Key.font:label.font]){
        let labelWidth = label.frame.width
        label.textAlignment = .left
        while(Int(size.width) > Int(labelWidth) * numOfLines){
            rowHeight+=20;
            numOfLines+=1
        }
        //becuase it was rounded down as int
        numOfLines+=1
        print("number of lines \(numOfLines)")
        label.numberOfLines = numOfLines
        label.lineBreakMode = .byCharWrapping
    }
    return CGFloat(rowHeight)
}

1 Ответ

0 голосов
/ 23 апреля 2019

@ Анна, я думаю, что ваша проблема может быть решена с помощью UITableViewAutomaticDimension . Просто убедитесь, что numberOfLines для метки установлено в 0, а метод делегата heightForRowAtIndexPath должен возвращать UITableViewAutomaticDimension, а также не забудьте добавить правые, левые, верхние и нижние ограничения для метки.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension
 } 

Пожалуйста, найдите ссылку для более подробной информации: - UITableViewAutomaticDimension

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