在 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 页脚视图进行运行时扩展