我一直致力于改善自己Auto Layout
和创造设计。
我已经阅读了很多关于约束优先级,压缩阻力和拥抱优先级以及内在内容大小的内容
在我的项目中重新创建几乎所有的xib / storyboard文件后,我一直在努力设计一个简单的自定义UICollectionViewCell
。
这是必需的设计:
但我似乎无法创建适当的约束来处理所有屏幕分辨率(特别是iPhone 5)。
这就是我所做的:
我创建了2个独立的视图,顶部的标题视图和contentView。
关于蓝色和灰色观点:
现在,为了在不同的屏幕设备上始终具有大致相同的外观,我在equal height
和 contentView (blue view
)之间添加了约束white view
,常数为1:3
。这意味着蓝色视图将始终是父白色视图的1/3。
对于gray view
,我添加了equalHeight
约束,blue view
等于1:2
。
UILabel和2个UIImage视图:
现在有趣的部分开始了,我在蓝色视图中为trailing
设置了top
,bottom
和UILabel
约束,但leading
却相同对于外面的大型ImageView,horizontal constraints
和警报图标UILabel
之间的Image View
以及horizontal constraint
之间的2 Images Views
。
现在我知道我有自动布局约束模糊,因为它不知道要压缩或剪辑哪个元素。
编辑:所以我将UILabel的内容拥抱优先级更改为1000,现在我拥有了所有3个元素,但在iPhone 5上,结果是一场灾难。
编辑:这是一个包含所有约束的全局图像。它在iPhone 5上看起来并不好。
答案 0 :(得分:1)
您有一个约束歧义,因为您必须为alertImageView和warningImageView设置宽度/高度约束,除了将标签的contentHugging priority horizontal设置为1000
尽管不在同一个容器中,也可以在alertView和warningView之间创建H间距。