如何以编程方式更改现有UIImageView中的图像并使其适合图像视图的约束?

时间:2015-01-24 21:36:50

标签: objective-c uiimageview uiimage interface-builder autolayout

我有一个UIImageView,当我使用IB在该视图中设置图像时,当我运行应用程序(40x40)时,图像的大小正确。当我使用下面的代码以编程方式更改图像时,新图像大约为400x400。如果它在IB中设置,则使用我知道可以正常工作的相同图像。在将图像添加到UIImageView之前,是否必须缩放图像?我认为自动布局的约束会自动为我做这件事。

UIImage *messageTypeImage = [UIImage imageNamed:message.imageName];
[messageCell.imageView setImage:messageTypeImage];
[messageCell.contentView layoutIfNeeded];

UIImageView的内容模式设置为" Scale To Fill"我在调用setImage之前和之后尝试添加下面的代码:

[messageCell.imageView setContentMode:UIViewContentModeScaleAspectFill];
[messageCell.imageView setClipsToBounds:YES];

以下是如何为图像视图设置约束:

enter image description here

2 个答案:

答案 0 :(得分:0)

您使用的是iOS 8 SDK吗?如果是这样,请尝试覆盖您的单元子类中的layoutSubviews并添加:

   self.contentView.frame = self.bounds;
   self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

集合视图/表视图单元格约束/掩码的contentViews存在一些问题。

答案 1 :(得分:0)

哇。终于找到了答案here。事实证明,原型单元格中有一个默认的imageView插座。我不知不觉地使用了那个插座,而不是我认为我正在使用的UIImageView。