ImageView contentMode 正确缩放图像?

Posted

技术标签:

【中文标题】ImageView contentMode 正确缩放图像?【英文标题】:ImageView contentMode to scale images properly? 【发布时间】:2012-01-26 08:04:15 【问题描述】:

我正在绘制一堆 UIImageView (100x100) 作为菜单项。每个都有自己的图像,有些大于 100x100,有些更小。默认情况下,具有较大图像的 imageView 会按比例缩小以很好地适应 100x100 的框。

但是,小于 100x100 的图像正在被放大,这使得它们非常模糊。我想要它,所以较小的图像只是保持它们自然的大小。否则我对大图像的缩放方式感到满意,而不是较小的图像。

我无法通过切换到UIViewContentModeScaleAspectFitUIViewContentModeScaleAspectFillUIViewContentModeScaleToFill 来实现任何目标。

有人对我如何实现这一目标有想法或技巧吗?我可以使用 if 语句来检查图像的尺寸并发送它们的 contentMode(中心?),但这似乎有点骇人听闻,因为我正在使用 for in 循环从 NSDictionary 中绘制每个项目。任何帮助表示赞赏。谢谢

【问题讨论】:

【参考方案1】:

如果我理解正确,您可以在设置框架之前先检查图像尺寸,例如:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageName:@"myimage.png"]];
[imageView sizeToFit];

CGRect newFrame = imageView.frame;
if (newFrame.size.width > 100) newFrame.size.width = 100;
imageView.frame = newFrame;

你需要一些额外的逻辑来为高度做类似的事情。这是你的意思吗?

【讨论】:

以上是关于ImageView contentMode 正确缩放图像?的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView的image的图片显示 imageView.contentMode

在 UIButton 的 ImageView 上将 ContentMode 设置为 AspectFill 不适用于较小的图像

iOS:重用 UITableViewCell 的 imageView 属性不尊重 contentMode 或 clipsToBounds [重复]

[BS-24] UIImageView的contentMode属性

iOS >> UITableViewCell ImageView 属性 >> ContentMode 没有任何作用

UIImageView 设置为 imageWithData 忽略 contentMode