根据UILabel子视图的大小更改UITableViewCell高度

时间:2017-04-28 05:32:31

标签: ios iphone swift uitableview uilabel

我正在为练习制作一个简单的短信应用程序,UITableView有很多包含消息的单元格。

Texting App

它可以很好地处理单行消息,但正如您在底部看到的那样,使用多行文本时,UITableViewCell的大小开始妨碍并缩短消息。以防万一,这里是我的cellForRowAtIndexPath方法的代码:

internal func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = UITableViewCell()
    if usernames[indexPath.row] == PFUser.currentUser()?.username {
        cell = tableView.dequeueReusableCellWithIdentifier("text")!
    } else {
        cell = tableView.dequeueReusableCellWithIdentifier("reply")!
        (cell.viewWithTag(2) as! UILabel).text = usernames[indexPath.row]
    }
    (cell.viewWithTag(1) as! UILabel).text = messages[indexPath.row]

    return cell
}

基本上我只需要一个能够使这个应用程序支持多行消息的解决方案。在此先感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

您需要做的两件事:

1)在viewDidLoad中,指定以下内容:

tableView.rowHeight = UITableViewAutomaticDimension
# The estimated row height number is not that important, just approximate it
tableView.estimatedRowHeight = 140

2)定义自定义单元格的所有约束。确保明确定义顶部和底部约束。

第二步特别重要。

答案 1 :(得分:1)

1)在故事板上,    在“属性检查器”部分中。    设置行= 0

2)在func viewDidLoad(),

    tableView.estimatedRowHeight = 50.0
    tableView.rowHeight = UITableViewAutomaticDimension

答案 2 :(得分:0)

您可以使用自行调整表格视图单元格和UITableViewAutomaticDimensionThis是关于它的非常好的文章。

  

让Auto Layout在UITableViewCell上工作的技巧是确保你有限制来固定所有方面的每个子视图 - 也就是说,每个子视图应该有前导,顶部,尾部和底部约束。然后,子视图的固有高度将用于指示每个单元格的高度。你现在就做。

然后将rowHeight设置为UITableViewAutomaticDimension

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 140