gpt4 book ai didi

ios - 嵌套 View 中的拥抱和压缩阻力

转载 作者:可可西里 更新时间:2023-11-01 04:08:42 26 4
gpt4 key购买 nike

我想了解拥抱和抗压的真正作用。

在这种情况下,我需要在左侧(绿色容器内)和右侧(蓝色容器内)两个标签。

enter image description here

如图所示,我希望绿色容器容纳内容(Android 的 wrap content),蓝色容器填充剩余空间(Android 的 fill_parent)。

我想我可以向绿色 View 添加拥抱/压缩优先级,例如:

greenView.setContentHuggingPriority(
UILayoutPriorityDefaultHigh, forAxis: .Horizontal)
greenView.setContentCompressionResistancePriority(
UILayoutPriorityDefaultHigh, forAxis: .Horizontal)

但是好像并没有达到预期的效果。我必须将这些约束应用于(红色和黄色)标签。

有人知道原因吗?

一些想法(已编辑):

根据 Ken 的回答,您必须为标签而不是容器 View 设置拥抱/压缩。

在这个问题的例子中,我会为左边的标签设置 750(高)的拥抱和 1000(必需)的阻力。由于标签的默认值是 251(低+1)的拥抱和 750(高)的阻力,因此左侧标签的拥抱和压缩会更大(750 > 251 和 1000 > 750)。同时,压缩将大于标签内的拥抱 (1000 > 750)。

这样,左边的标签会尝试压缩它们的内容,但不会压缩它。例如,红色标签无法完全包裹其内容,因为黄色标签不想压缩。

呸!

最佳答案

Content hugging 和 compression resistance 优先级仅与 View 的固有内容大小有关。基本上,如果 View 具有固有的内容宽度,那么自动布局系统会将其视为受到以下约束:

[view(<=intrinsicWidth@contentHuggingPriority)]
[view(>=intrinsicWidth@compressionResistancePriority)]

这就是所有这些意思。当然,这同样适用于固有高度。

用作容器的普通 UIView 没有固有大小。因此,它的内容拥抱和抗压缩优先级是没有意义的。

关于ios - 嵌套 View 中的拥抱和压缩阻力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33842797/

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