在已经出现的时候改变dynamic高度UITableViewCell的高度

我按照这个教程创build了一个dynamic高度的UITableViewCell。

我的原型单元格有一个标签(非常简单)。 对于单元边的所有边,该标签都将约束设置为“0”。 该标签有numberOfLines = 0并包装单词。

在我的UITableView设置中,我这样做:

  self.tableView.rowHeight = UITableViewAutomaticDimension self.tableView.estimatedRowHeight = 100.0 //some random number 

基本上,一切正常。 每个单元有不同的高度。

当我用不同的文本更新标签时,问题就出现了。 单元格的高度保持不变,文本被截断或出现空白。

有没有办法告诉细胞“重绘”自己,以便再次计算高度?

理想情况下,我想在UITableViewCell类中做这个,因为这是接收通知来更新标签文本的地方。

您必须实现estimatedHeightForRowAtIndexPath并计算您的标签大小。

例如 :

 override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { let model = YourModelArray[indexPath.row] // Label fontName and size let attributes = [ NSFontAttributeName : UIFont(name: "FontName-Regular", size: 16) as! AnyObject] let nsStringText = model.text as! NSString // Calculate the size here //--------------------// //--10--UILabel--10--// //-----Element------// //------------------// let size = nsStringText. boundingRectWithSize(CGSize(width: self.tableView.frame.width - 20, height: 1000), options:[NSStringDrawingOptions.UsesLineFragmentOrigin, NSStringDrawingOptions.UsesFontLeading], attributes: attributes, context: nil) // Basically add other elements heights and vertical Spacing between them return size.height + element.frame.height + verticalSpacingBetweenLabelAndElement }