如何使autolayout覆盖UIImageView的内在大小?

时间:2014-07-17 15:16:31

标签: ios uiimageview autolayout uisplitviewcontroller

我在UISplitViewController的详细信息视图中遇到自动布局问题。我的视图层次结构包含带有装饰元素的UIImageView,图像视图的内在大小似乎搞砸了其余控件的布局。

这些是我为图像视图指定的约束:

H:[UIImageView:0xc83ba90]-(NSSpace(20))-|
H:|-(NSSpace(20))-[UIImageView:0xc83ba90]
UIImageView:0xc83ba90.bottom == UITextField:0xc83d2d0.bottom
V:[UIImageView:0xc83ba90 (3)]>,
H:[UIImageView:0xc83ba90 (532)] Hug:1 CompressionResistance:750
V:[UIImageView:0xc83ba90 (2)] Hug:250 CompressionResistance:750

我想要的行为是调整图像视图的大小以填充其超级视图,如前两个约束所述。我看到的实际行为是图像视图仅占用由其内在大小约束描述的水平空间。它似乎也在改变其所有兄弟视图的布局,就好像superview只是在与图像视图一样宽的矩形中布局视图。

我认为指定图像视图的拥抱优先级尽可能低会让其他约束覆盖它以调整图像视图的大小。我在这里做错了什么?

1 个答案:

答案 0 :(得分:9)

所以,我终于找到了解决方案。

解决方法是将 SuperView的拥抱优先级提高到高(750或更高),并将 UIImageView的压缩阻力优先级降低到(250或更低)。 这将使约束覆盖图像的内在大小。

Content Hugging Priority - The higher this priority is, the more a view resists growing larger than its intrinsic content size.
Content Compression Resistance Priority - The higher this priority is, the more a view resists shrinking smaller than its intrinsic content size.