根据内容动态调整tableview单元格的高度 - iOS Swift

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据内容动态调整tableview单元格的高度 - iOS Swift相关的知识,希望对你有一定的参考价值。

我试图通过使用部分A中的以下代码,根据详细文本标签中设置的内容动态设置行高。

我将几行文本插入单元格的详细文本标签中,如下面B部分所示

我看过其他类似的问题,但都没有帮助。

有人可以建议我如何根据详细文本标签的内容动态调整行高。

A部分

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

也试过了

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return UITableViewAutomaticDimension
    }  

B部分

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "daysIdentifier", for: indexPath)

        cell.textLabel?.text = days[indexPath.row]

        cell.detailTextLabel?.numberOfLines = 0

        var joinedString            = self.availabilityTimeDict[dayName]?.joined(separator: " 
 ")
        cell.detailTextLabel?.text  = joinedString
        return cell
    }

enter image description here

答案

使用自定义单元格和标签。设置UILabel的约束。 (上,左,下,右)将UILabel的行设置为0

在ViewController的viewDidLoad方法中添加以下代码:

tableView.estimatedRowHeight = 68.0
tableView.rowHeight = UITableViewAutomaticDimension

//委托和数据源

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension;
}

斯威夫特4:

//委托和数据源

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

Swift 4.2:

//委托和数据源

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
     return UITableView.automaticDimension
}
另一答案

在表视图的内容中给出顶部,底部,前导和尾随标签。使用下面的表视图方法

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

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
{
 return 100
}
另一答案
  • 首先设置一个自定义单元格并添加一个标签,并将其行数设置为零,并为单元格的内容视图提供底部,顶部,前导,尾随约束(不要给出高度),同时在viewDidLoad中为单元格大小的单元格提供自定义高度你只需要做,

tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 100.0

以上是关于根据内容动态调整tableview单元格的高度 - iOS Swift的主要内容,如果未能解决你的问题,请参考以下文章

iOS 中包含 UIWebView 的单元格的动态 UITableViewCell 高度

根据内容自动调整 UITableViewCell 高度

将动态单元格的表视图内容高度设置为表视图高度约束 ios

动态更改表格视图单元格的高度

涉及行跨度时,根据内容自动调整 HTML 表格单元格的高度

自动调整大小(动态高度)表格视图单元格的问题