intrinsicContentSize.width 的值大于指定的 widthAnchor

Posted

技术标签:

【中文标题】intrinsicContentSize.width 的值大于指定的 widthAnchor【英文标题】:intrinsicContentSize.width's value is greater than specified widthAnchor 【发布时间】:2021-11-14 02:52:29 【问题描述】:

我有一个 UILabel,我添加了前导、尾随、顶部、底部、宽度和高度自动布局约束,在运行时出于某种原因,intrinsicContentSize 的值大于我为 widthAnchor 指定的值为 1000优先级。

我已附上屏幕截图以了解更多详细信息:

注意:

UILabel 的框架设置为 .zero,因为我使用的是自动布局,是的,translatesAutoresizingMaskIntoConstraints 设置为 false。

如何让 contentSize(intrinsicContentSize) 等于我指定的约束?

【问题讨论】:

【参考方案1】:

在多个论坛上发布相同的问题后,这是我收到的解释。

前导和尾随约束希望 UILabel 的宽度等于 365.25,但是 insintricContentSize 出于某种未知原因将其四舍五入为 365.5,可能是因为它是四分之一像素或其他原因.

我做了什么来解决它:

我得到365.25 的方式是UIScreen.main.bounds.width * 0.95,我将这个等式更改为ceil(UIScreen.main.bounds.width * 0.95),所以这是四舍五入,我们有一个完整的像素而不是四分之一。

在我的情况下,这解决了问题,Apple 并没有在他们的布局引擎文档中真正指定此规则,希望这对将来的某人有所帮助。

干杯。

【讨论】:

以上是关于intrinsicContentSize.width 的值大于指定的 widthAnchor的主要内容,如果未能解决你的问题,请参考以下文章