这个让我发疯。我有UIImageView
,约束为'width< = 34'。当我将图像设置为nil
时,我希望视图的宽度缩小到零,但不会。
我已经对所有内容进行了双重和三重检查......没有其他任何应该干扰的约束,等等。实际上,我有另一个表视图单元格可以完美地工作。
我错过了什么?
编辑:以下是此视图的所有约束。
答案 0 :(得分:1)
没有内在内容大小的视图的高度宽度不等式会产生不明确的布局。
(确切地说,对于返回UIViewNoIntrinsicMetric
作为内在内容大小的高度和宽度的视图)
让我们理解这一点。在下图中,每件事情看起来都是正确的。
现在,当图像设置为nil时,自动布局会提醒我们模糊性。
为什么?因为没有图像,返回的内在高度和宽度为UIViewNoIntrinsicMetric
,然后单独使用“height< = 37”之类的不等式无法帮助自动布局引擎找到视图的高度/宽度。
现在,当我们设置明确的内在内容大小时(虽然不适用于运行时),但是歧义已经解决。
因此,要解决您的问题,我们需要返回0,0作为内在内容大小。
您应该尝试子类化覆盖-intrinsicContentSize
的UIImageView。
@implementation ZeroedIntrinsicContentSizeImageView
- (CGSize)intrinsicContentSize {
if (self.image)
return [super intrinsicContentSize];
return CGSizeZero;
}
@end