我正在为练习制作一个简单的短信应用程序,UITableView有很多包含消息的单元格。
它可以很好地处理单行消息,但正如您在底部看到的那样,使用多行文本时,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
}
基本上我只需要一个能够使这个应用程序支持多行消息的解决方案。在此先感谢您的帮助!
答案 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)
您可以使用自行调整表格视图单元格和UITableViewAutomaticDimension
。 This是关于它的非常好的文章。
让Auto Layout在UITableViewCell上工作的技巧是确保你有限制来固定所有方面的每个子视图 - 也就是说,每个子视图应该有前导,顶部,尾部和底部约束。然后,子视图的固有高度将用于指示每个单元格的高度。你现在就做。
然后将rowHeight设置为UITableViewAutomaticDimension
:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 140