gpt4 book ai didi

ios - 刚性约束与 `-intrinsicContentSize`

转载 作者:行者123 更新时间:2023-11-29 01:52:56 27 4
gpt4 key购买 nike

所以我最近在创作 Apple calls a leaf-level view (一个按钮)所以我按照 Apple 的文档来实现 -intrinsicContentSize 并且一切正常(尽管代码感觉有点奇怪 - 我在我的 -updateConstraints 方法中设置了约束定位 subview ,以及 -intrinsicContentSize 方法中的代码来计算总大小应该是多少;感觉就像我在向自动布局系统提供重复信息)。

但是,我也遇到了一个 post on here声称,而不是使用 -intrinsicContentSize,使用严格的约束,然后 containerview 将自动调整大小以适应它包含的 View 。我也实现了这个,也取得了和上面一样的结果,但是这次我没有重复发送信息的感觉(我只是发送了直接的约束)。请注意,我将上述帖子中描述的 View 视为所谓的叶级 View ,因为它听起来不像要添加任何其他 View 。

根据其中的内容调整容器 View 大小的哪种实现是正确的方法?


我目前倾向于第二种方法,因为我认为我不应该发送重复的信息,但是 Apple 的文档另有说明(话又说回来,Apple 的文档有时会有点困惑/误导).


关于我的具体情况的旁注,如果重要的话:我的按钮中有两个 subview ,一个是图像,另一个是标签。图像的大小来自标签,然后整个按钮来自图像(因此间接地大小完全来自标签)。

最佳答案

您的按钮 View 应该具有基于标签和图像的内部约束。这些应该足以为其提供正确的尺寸。您不需要为此实现intrinsicContentSize。

按钮的 super View 不会也不应该知道或关心按钮内部发生了什么。您不直接引用内在内容大小,布局系统会这样做,并且如果您的按钮具有正确的内部约束,则没有必要。

内在内容大小允许 View 根据其显示内容(例如标签中的文本)将其大小表达为 View 层次结构最底部的内容。以上一切都是基于约束的。

您还可以使用它来允许具有非自动布局 subview 的 View 参与自动布局,但这可能会导致大量重复的帧计算代码。

关于ios - 刚性约束与 `-intrinsicContentSize`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212924/

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