UITextView 高度未在 UITableViewCell 中调整大小

Posted

技术标签:

【中文标题】UITextView 高度未在 UITableViewCell 中调整大小【英文标题】:UITextView height not resizing in UITableViewCell 【发布时间】:2018-07-27 07:12:05 【问题描述】:

以下是对UITextView 的约束:

其他子视图的约束:

UILabel:

UIView:

禁用滚动:

viewDidLoad:

self.tableLeadsOverview.estimatedRowHeight = 100
self.tableLeadsOverview.rowHeight = UITableViewAutomaticDimension  

内容:

1527 Clover Ridge Dr Burlington VA USA 90210

输出:

【问题讨论】:

您不需要在tableView 上调用beginUpdatesendUpdates 以进行任何调整吗?你可以在textViewDidChange试试看 @RakeshaShastri:为什么我需要在自动布局中使用它? 因为tableView需要更新?您已经为 tableViewCell 设置了高度。如果 tableView 需要 layoutChange,您需要在进行必要的更改后调用这两个方法,您的自动布局代码将为您完成。你只需要调用这些方法让它们反映。 @BhavinKansagara:你去吧。更新了问题。 尝试移除 UILable 的底部约束 【参考方案1】:

问题在于 UILabel 的底部约束。尝试删除它,因为您为标签提供了高度限制,因此它始终保留在左上角,或者如果您想将标签保持在单元格的中心。

尝试并分享结果。

【讨论】:

就是这样。这就是问题所在。 @karthikeyan:非常感谢。在您的评论通知之前实际阅读此答案的通知。【参考方案2】:

在这种情况下自动调整大小将不起作用,因为 UITextView 包含滚动视图以显示其包含和滚动视图具有其 contentSizeframe,因此如果其内容/文本增加它会增加其 contentSize 而不是框架,因此单元格大小不会自动增加。请按照以下步骤解决此问题。

    使用现有约束为 UITextView 并将其导出到单元类。 将 UITextView 的引用出口也带到单元格类中 现在来到CellForRowAtIndexPath的数据源方法 UITableView 这里首先将文本/内容设置为 UITextView 然后设置 UITextView's 高度约束 如UITextView's contentSize.height 使用高度约束 你在上面拿的插座。

如有任何疑问,请告诉我。

【讨论】:

好点。尝试了相同的方法,但约束的常数为 35.5,这是不正确的。 你必须设置高度约束 = UITextViewOutlet.contentSize.height 是的。只是这样做 移除标签的高度限制【参考方案3】:

我曾在与您类似的单元上工作过。

我的解决方案是创建一个高度灵活的标签来显示 textField 的内容。标签具有文本字段的所有约束,除了高度约束,numberOfLines 设置为0,以便它可以帮助您调整rowHeight 的大小。不编辑时,隐藏 textField。当用户选择行(开始编辑)时,隐藏标签,显示 textField,然后调用[textField becomeFirstResponder]

有点棘手。 :]

【讨论】:

以上是关于UITextView 高度未在 UITableViewCell 中调整大小的主要内容,如果未能解决你的问题,请参考以下文章

UItextView 委托方法未在子视图内调用

可变高度 UITextView

具有动态高度的 UITextView

为啥 UITextView 高度仅在滚动时变为动态?

UITableview swift中的UITextview高度

如何动态调整 UITextView 的高度