由NSData创建的UIImages不遵循UIViewContentMode属性

5

我一直通过绕过它来解决这个问题已经有一段时间了,但我真的很想知道正确处理这种情况的方法:

如果我从CoreData中获取NSData格式的图像,例如:

NSData *myImageData = myEntity.Image;
cell.imageView.image = [UIImage imageWithData:myImageData];
[cell.imageView setContentMode:UIViewContentModeScaleAspectFit];

如果图像大于UIImageView的CGRect,则图像不会限制在UIImageView的CGRect中。

我目前使用以下代码来解决此问题:

CGSize size = CGSizeMake(98, 98);
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

cell.imageView.image = scaledImage;

这个方法是有效的,但我希望有人能告诉我使用ContentMode方法时我做错了什么,因为它应该可以工作。

感谢您抽出时间阅读我的问题。


不确定这是否对情景有影响,但我正在尝试在UITableViewCell内部完成此操作。 - Joseph DeCarlo
你解决了吗? - Abdalrahman Shatou
1个回答

0

在设置内容模式后,您需要调用[cell.imageView setNeedsDisplay],或将调用setContentMode的位置移动到设置cell.imageView.image值之前。


1
尝试过这两个了...没有成功。 - Joseph DeCarlo
1
那么我怀疑你的代码存在更多问题,即它是一个更广泛的问题。你可以尝试发布更多的代码。 - kamprath
我很感谢您的反馈。我已经编写了一个独立的示例来尝试重新创建这个问题。我发现这个问题可能与图像本身有关。我仍在努力重现这个问题,但似乎在某些情况下图像可以正常工作,而在其他情况下则不行。 - Joseph DeCarlo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接