gpt4 book ai didi

ios - 在已经出现后更改动态高度 UITableViewCell 的高度

转载 作者:行者123 更新时间:2023-11-29 01:16:18 25 4
gpt4 key购买 nike

我关注了this tutorial创建一个动态高度的 UITableViewCell。

我的原型(prototype)单元有 1 个标签(非常简单)。该标签将单元格边缘的所有边的约束设置为“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
}

关于ios - 在已经出现后更改动态高度 UITableViewCell 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com