堆栈视图和内容拥抱优先级 - 意外行为

Posted

技术标签:

【中文标题】堆栈视图和内容拥抱优先级 - 意外行为【英文标题】:Stack View & Content Hugging Priority - Unexpected Behaviour 【发布时间】:2019-05-22 11:41:43 【问题描述】:

我在一个集合视图单元格中有一个包含 3 个元素(2 个图像视图和 1 个标签)的堆栈视图,如以下屏幕截图所示:

我想要实现的是让标签占据所有可能的空白空间而不是图像视图,这就是 xib 中显示的内容。 理论上,只要在图像视图上设置更大的Content Hugging Priority 值,就应该实现以下目标,因为高值意味着我们不希望某个视图大于其内容。

但我从各种实验中得到的奇怪结果如下:

1 未按预期工作

ImageViews 上的内容拥抱:251

标签上的内容拥抱:250

2 确定

ImageViews 上的内容拥抱:999

标签上的内容拥抱:250

因此,即使这两种情况在理论上应该以相同的方式工作,(如在界面构建器中)事实是在运行时它们不是!你知道为什么会这样吗?我错过了什么?谢谢!

PS:堆栈视图有Distribution: fill 和居中对齐

【问题讨论】:

【参考方案1】:

为 2 张图片设置宽度和高度限制

也别忘了实现sizeForItemAt

【讨论】:

是的,谢谢,我当然知道我可以设置约束并以这种方式解决它(这比我发布的解决方案 #2 更难维护),但这不是我的问题的重点跨度>

以上是关于堆栈视图和内容拥抱优先级 - 意外行为的主要内容,如果未能解决你的问题,请参考以下文章

为啥忽略拥抱优先级?

使用自动布局时的内容拥抱

加宽 UIButton 的边框?

内容拥抱优先级动态单元格大小

意外行为 java 优先级队列。对象添加了一次但轮询了两次。怎么可能?

以百分比指定两个 UIView 的约束