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