在 UITableview 内的自动调整大小的标签上设置非常长的文本会破坏 NSLayoutConstraint

Posted

技术标签:

【中文标题】在 UITableview 内的自动调整大小的标签上设置非常长的文本会破坏 NSLayoutConstraint【英文标题】:Setting very very long text on auto sized label inside a UITableview breaks the NSLayoutConstraint 【发布时间】:2018-10-08 16:10:07 【问题描述】:

我在 UITableview 中有一个自动调整大小的单元格。我正在使用 AutoLayout 和 UITableViewAutomaticDimension 作为行高。

它适用于所有情况,即使是很长的文本(Lorem ipsum 的 2000 字)。

但是当我设置一个很长的文本时,例如5000 字的 Lorem Ipsum,我在结尾处截断了文本,我在日志中得到了以下信息

这个 NSLayoutConstraint 被配置了一个常量 超过内部限制。将替换一个较小的值,但 这个问题应该得到解决。突破 BOOL _NSLayoutConstraintNumberExceedsLimit(void) 进行调试。这将只记录一次。这可能会在未来中断。

这是我的限制条件。

以前有人遇到过这个问题吗?这个问题的解决方法是什么。

【问题讨论】:

你能显示相关的约束吗? 你使用的是UITableViewCell自带的textLabel吗?还是自定义UILabel?或者您使用的是UITextView?哪一个? 我相信 UILabel(可能还有其他视图对象)的最大高度是 8192。我没有收到您收到的错误消息——我在 ios 11 上——如果你是12日,这可能是新的。但是,无论如何,将 LOT 的文本填充到标签中,以及 LOT 的要滚动的文本。你确定这不会是糟糕的用户体验吗? 【参考方案1】:

您已经超过了 UILabel 能够容纳的最大尺寸(令人讨厌的是,Apple 的文档中没有定义)。如果你需要这么长的文本,你应该使用UITextView。要使其行为与UILabel 相同,请确保设置isEditable = false

【讨论】:

以上是关于在 UITableview 内的自动调整大小的标签上设置非常长的文本会破坏 NSLayoutConstraint的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITabBarViewController 内的 UINavigationController 内调整 UITableView 的大小?

如何避免在自定义容器(stackedViewcontroller)内的 UiNavigationcontroller 内调整 UITableView 的大小

使用自动布局对 uitableview 页脚视图进行运行时扩展

在 UITableView 页脚中动态设置和调整标签大小

自动布局动态大小 uitableview 单元格的最佳方法是啥

在自动调整 TextView 大小时输入文本时 UITableView 闪烁/口吃