gpt4 book ai didi

iOS 自动布局忽略 "trailing space"约束,而是使用宽度/内容大小?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:21 25 4
gpt4 key购买 nike

我有一个 UILabel(副标题),我希望它有一个静态 X 原点,但延伸到它最近邻居的边缘。如果不需要,有一个按钮(“访问链接”)可以在运行时选择性地从 super View 中删除。从标签到按钮的约束优先级为1000,从标签到superview容器的约束优先级为250:

enter image description here

但是,当我运行删除按钮的应用程序时(通过 viewDidLoad 方法中的 .removeFromSuperview()),通过 View 调试我看到内容大小是设置标签的宽度,优先于我设置的约束。

期望标签延伸到 View 的边缘,但如您所见,约束是灰色的——我假设被(content size) 改为约束:

enter image description here

(content size) 约束是否比我的 Trailing Space to: Superview 约束具有更高的优先级?我该如何更改它,因为它不是我定义的约束?

最佳答案

当您从 View 层次结构中删除按钮时,也会删除涉及该按钮的任何约束。因此,剩下的就是优先级为 250 的父 View 的尾随约束。

标签具有基于其内容的固有宽度。这意味着它的水平内容拥抱和抗压缩优先级开始发挥作用。它的内容拥抱优先级是 251。

这意味着对于自动布局系统来说, View 的宽度不超过必要的宽度比保持其后缘与父 View 的后缘相距 8 点更为重要。

您可能应该增加尾随约束的优先级。您希望它小于按钮的尾随约束,以便在存在按钮的情况下不会发生冲突。您还希望它低于按钮的压缩阻力优先级,以便按钮不会被压扁以允许标签距 super View 8 点。但是,除此之外,您希望它尽可能高。 (在假设的情况下,您只是简单地摆脱了存在按钮的可能性,您通常会要求该尾随约束,对吧?因此,它应该尽可能接近要求,而不会造成不良副作用。)

如果您的目标是部署到 iOS 9.0 或更高版本,您应该考虑为此布局使用 UIStackView。它会为您处理一些事情,例如在隐藏或显示按钮时添加或删除适当的约束。

关于iOS 自动布局忽略 "trailing space"约束,而是使用宽度/内容大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856119/

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