UIImageView 内容模式和比例因子

Posted

技术标签:

【中文标题】UIImageView 内容模式和比例因子【英文标题】:UIImageView content mode and scale factor 【发布时间】:2012-08-23 19:47:41 【问题描述】:

我有一个使用这种代码以编程方式创建的 UIImage 图像:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(128, 128), NO, 0.0f);
// Render in context
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

由于我的上下文选项指定比例为 0,因此在视网膜设备上它将设置为 2,我可以在生成的 UIImage 比例属性上确认这一点。

现在,问题是该图像尺寸为 128x128,比例为 2。当我将其放入尺寸为 64x64 且 contentMode = Center 的 UIImageView 中时,它会将我的图像渲染到 imageview 之外,大概会渲染到 128x128 的框内而无需任何缩放。

我对 Retina 图形的理解是,如果图像的比例因子为 2.0,则它应该以 1/2 大小呈现,从而导致更高的 DPI。 所以我期待图像视图以视网膜质量呈现 64x64 图像。我哪里错了?

【问题讨论】:

【参考方案1】:

图像将以您提供的尺寸渲染 - 128 x 128。比例因子意味着您将获得更好的渲染曲线等,但图像仍将是 128 x 128 点。如文档中所述,大小参数为:

新位图上下文的大小(以 为单位)。这表示 UIGraphicsGetImageFromCurrentImageContext 函数返回的图像的大小。

如果您想要视网膜质量的 64x64 图像,请为您的上下文使用 64x64 尺寸。

【讨论】:

谢谢。请问你怎么这么快就发现了这个问题?我为 RSS 提要的延迟而苦恼 刚出现在首页上。我不使用 RSS 提要,并且设置了我喜欢和忽略的标签。

以上是关于UIImageView 内容模式和比例因子的主要内容,如果未能解决你的问题,请参考以下文章

AutoLayout:UIImageView 和 Aspect Fit 内容模式

获取uiimageview下的uiview部分?

UIImageView:如何在平移和缩放后仅捕获可见内容

UIImageView:将大小更改为图像大小?

更改 UIScrollView 中的比例因子

UIImageView三种方式 和 位置分布