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