通过单元格内 textView 的内容更改单元格高度
Posted
技术标签:
【中文标题】通过单元格内 textView 的内容更改单元格高度【英文标题】:Change cell height by the content of the textView inside the cell 【发布时间】:2015-09-18 12:56:01 【问题描述】:我有一个名为todoTableView
的表格视图,其中包含用户创建的单元格。
每个单元格都有文本视图。
我想通过文本视图的内容来改变单元格的高度。
这是我尝试过的:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell: TableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! TableViewCell
cell.bounds.size.height = cell.textView.bounds.size.height
return cell
【问题讨论】:
你在使用自动布局吗? 查看this question。 @Irfan 是的。 Phoen1xUK - 我不知道 Objective-C 【参考方案1】:使用边缘约束从各个方面将textview
与cell
绑定。(前导、尾随、顶部和底部约束)
在 viewDidLoad() 中添加以下内容。
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension
这将使您的单元格大小根据您的 textview 内容大小。
看看结果:
您无需编写 heightForRowAtIndexPath。
【讨论】:
由于某种原因它不起作用,也许我没有正确使用边缘。你能告诉我具体怎么做吗? 你有和上面一样的情况吗?如果是,则选择 textview 并使用单元格的 contentView 将其前导、尾随、顶部和底部约束设置为零。确保禁用 textview 的滚动。试试这个,让我知道它是否有帮助。谢谢 好吧,我刚做了,还是不行..一直在写,但单元格高度没有改变 此功能称为自定尺寸表视图。一步一步地按照两个链接之一进行操作。 appcoda.com/self-sizing-cellsraywenderlich.com/87975/…。两者都在迅速。 更新:当我说它不起作用时 - 我的数组里面什么都没有,我在应用程序运行时向它添加了内容,在这种情况下,单元格高度没有更新。但是现在我在运行应用程序之前将内容放入数组中并且它发生了变化!但是当我在运行应用程序时更改内容时仍然没有更改。【参考方案2】:Irfan's answer 对我不起作用。
在我转到 Size Inspector 并检查“行高”的“自动”后,它就可以工作了。
【讨论】:
【参考方案3】:你还应该实现heightForRowAtIndexPath
:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
return // Calculate your custom row height here.
【讨论】:
退货后写什么?我希望它是动态的而不是静态的。 您需要计算行高,这在很大程度上取决于您想要做什么。您可以通过检索它来获取基于单元格的高度,在创建单元格时对其进行缓存,或通过计算文本高度来确定它(通过临时添加视图或通过sizeThatFits
。有关更多方法,请参阅***.com/questions/19049532/…。
这个解决方案已经过时并且计算成本比标准解决方案要高。 ios 8 允许按照@Irfan 的建议自动调整单元格大小。
如果您不需要 iOS 7,那绝对是正确的。我没有看到提到的版本。以上是关于通过单元格内 textView 的内容更改单元格高度的主要内容,如果未能解决你的问题,请参考以下文章
UITextView 和单元格根据 textview 的内容动态更新高度?
在单元格内编辑textview时,将另一个单元格添加到tableview