iOS - 具有约束优先级和抗压缩性的自动布局问题

iOS - Auto Layout issue with constraints priority and compression resistance

我一直在努力提高自己 Auto Layout 和创造设计。

我已经阅读了很多关于约束优先级压缩阻力拥抱优先级但是也 内部内容大小 .

在我的项目中 re-creating 几乎所有 xib/storyboard 文件之后,我一直在努力设计一个自定义的简单 UICollectionViewCell.

这是所需的设计:

但我似乎无法创建适当的约束来处理所有屏幕分辨率(特别是 iPhone 5)。

这是我所做的:

我创建了 2 个独立的视图,顶部的标题视图和内容视图。

关于蓝色和灰色视图:

现在为了在不同的屏幕设备上始终具有大致相同的外观,我在 blue viewcontentView 之间添加了约束 equal heightwhite view),常数为 1:3。这意味着蓝色视图将始终是 parent 白色视图的 1/3。

并且对于 gray view,我添加了一个 equalHeight 约束,其中 blue view 等于 1:2

UILabel 和 2 个 UIImage 视图:

现在有趣的部分开始了,我已经为蓝色视图中的 UILabel 设置了 trailingtopbottom 约束,相同但 leading 用于外部的大 ImageView,horizontal constraintsUILabel 和警告图标 Image View 之间,horizontal constraint2 Images Views.[=34 之间=]

现在我知道我有自动布局约束歧义,因为它不知道要压缩或剪辑哪个元素。

编辑:所以我将 UILabel 的内容拥抱优先级更改为 1000,现在我拥有了所有 3 个元素,但在 iPhone 5 上结果是一场灾难。

编辑:这是一个包含所有约束的全局图像。在 iPhone 5.

上看起来不太好

你有一个约束歧义,因为你必须为 alertImageView 和 warningImageView 设置 width/height 约束,除了将标签的 contentHugging 优先级水平设置为 1000

也可以在 alertView 和 warningView 之间创建 H 间距,尽管它们不在同一个容器中。