gpt4 book ai didi

ios - UILabel 怎么不实现 intrinsicContentSize?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:07 29 4
gpt4 key购买 nike

正如我们所知,UILabel 具有 intrinsicContentSize,我的困惑是当我们将标签固定到它的 super View 时,例如前导和尾随偏移量为 10,并将 numberOfLines 设置为 0,假设 super View 是宽度为 320 的 View Controller View ,以及标签如何知道它的宽度是 300。另一个,当标签被压缩时有多重约束,标签如何知道它被压缩并重新计算它的大小?

最佳答案

intrinsicContentSize 独立于任何上下文,包括应用于标签的任何约束。这其实就是内在的意思。

因此,当您请求标签的 intrinsicContentSize 时,它​​不知道它的宽度将是 300,实际上它会返回适合其内容的任何宽度。继续检查它:询问包含“foo”或“Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae sapien nec elit tongue incident”的标签的 intrinsicContentSize。您不会得到相同的结果。

知道您可能想知道:如果 intrinsicContentSize 是 (52,21) 或 (633,21),为什么它最终会在 (300, 21) 处结束?

答案很简单:intrinsicContentSize 生成隐式约束,其优先级由标签的 contentHuggingPriority 和 contentCompressionResistancePriority 控制。这些通常小于 1000。相反,前导和尾随偏移量的优先级是最大值 1000。因此偏移约束在最终布局中胜出,标签以 300 宽度结束。

现在尝试将 contentHuggingPriority 和 contentCompressionResistancePriority 设置为 1000:您将看到冲突。你知道为什么吗?

关于ios - UILabel 怎么不实现 intrinsicContentSize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33951879/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com