【发布时间】:2015-11-21 11:31:14
【问题描述】:
我试图了解拥抱和抗压的真正作用。
我有这种情况,我需要在左侧(绿色容器内)有两个标签,在右侧(在蓝色容器内)需要两个标签。
如图所示,我希望绿色容器包含内容(Android 的 wrap content),蓝色容器填充剩余空间(Android 的 fill_parent)。
我想我可以在绿色视图中添加拥抱/压缩优先级,例如:
greenView.setContentHuggingPriority(
UILayoutPriorityDefaultHigh, forAxis: .Horizontal)
greenView.setContentCompressionResistancePriority(
UILayoutPriorityDefaultHigh, forAxis: .Horizontal)
但它似乎没有按预期工作。我必须将这些约束应用于(红色和黄色)标签。
有人知道原因吗?
一些想法(已编辑):
根据 Ken 的回答,您必须将拥抱/压缩设置为标签而不是容器视图。
在这个问题的示例中,例如,我会在左侧的标签上设置 750(高)的拥抱和 1000(必需)的阻力。由于标签的默认值是拥抱 251(低+1)和阻力 750(高),因此左侧标签的拥抱和压缩会更大(750 > 251 和 1000 > 750)。同时,压缩将大于标签内的拥抱(1000 > 750)。
这样,左侧的标签会尝试拥抱它们的内容,但不会像压缩它那样多。例如,红色标签不能完全包裹其内容,因为黄色标签不想压缩。
呼!
【问题讨论】:
标签: ios autolayout