在已经出现的时候改变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 }