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

时间:2018-01-29 10:21:56

标签: ios autolayout interface-builder constraints nslayoutconstraint

我一直致力于改善自己Auto Layout和创造设计。

我已经阅读了很多关于约束优先级压缩阻力拥抱优先级以及内在内容大小的内容

在我的项目中重新创建几乎所有的xib / storyboard文件后,我一直在努力设计一个简单的自定义UICollectionViewCell

这是必需的设计:

enter image description here

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

这就是我所做的:

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

enter image description here

关于蓝色和灰色观点:

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

对于gray view,我添加了equalHeight约束,blue view等于1:2

UILabel和2个UIImage视图:

现在有趣的部分开始了,我在蓝色视图中为trailing设置了topbottomUILabel约束,但leading却相同对于外面的大型ImageView,horizontal constraints和警报图标UILabel之间的Image View以及horizontal constraint之间的2 Images Views

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

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

编辑:这是一个包含所有约束的全局图像。它在iPhone 5上看起来并不好。

enter image description here

1 个答案:

答案 0 :(得分:1)

您有一个约束歧义,因为您必须为alertImageView和warningImageView设置宽度/高度约束,除了将标签的contentHugging priority horizo​​ntal设置为1000

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