如何获取表格视图单元格每一行中字符串文本的高度?

时间:2018-08-30 11:57:05

标签: ios swift xcode uitableview uilabel

数据来自api,我想根据来自api的文本高度增加单元格高度。 我想在标签中显示更多文本,但由于单元格较小,因此会减少。

enter image description here

我做了UItableViewAutomationDimenension,但对我来说确实不起作用。

如果有人知道,请告诉我。 在此先感谢

2 个答案:

答案 0 :(得分:0)

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
}

答案 1 :(得分:0)

做完这些工作后,我找到了解决方案。

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

        if msg1[indexPath.row].messageType == "image"{
            return 185.0
        }
        else{
            let attrString = NSAttributedString(
                string: msg1[indexPath.row].message!,
                attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 16)])
            let size = attrString.boundingRect(
                with: CGSize(width: 200, height: CGFloat.greatestFiniteMagnitude),
                options: NSStringDrawingOptions.usesLineFragmentOrigin, context: nil)

            return size.height + 35
        }

因此它给出如下结果输出:

enter image description here

无论如何,感谢大家的回答... !!!