【发布时间】:2019-04-25 16:41:43
【问题描述】:
我在处理视网膜图像时遇到问题。
下面的屏幕截图显示了UICollectionView,每个UICollectionViewCell 中都包含一个UIImageView。
在应用程序中,我有一个名为 travel.png 的 512x512 像素的大图像。 当我将此文件命名为 travel.png 时,绿色圆圈显示了应用程序上显示的内容。蓝色圆圈显示了当我将图像名称更新为 travel@2x.png(即视网膜命名)时看到的内容。
我希望由于图像尺寸较大 (512x512),只需添加 @2x 后缀就足以将其转换为定义的两倍(即视网膜),但正如您从两个屏幕截图中看到的那样,两个版本图像显示为非视网膜。
如何更新图像以使其显示在 Retina 中?
旅行@2x.png: * 更新 * 以下 cmets 中的以下请求:
我通过调用以下函数加载此图像:
// Note - when this method is called: contentMode is set to .scaleAspectFit & imageName is "travel"
public func setImageName(imageName: String, contentMode: ContentMode) {
self.contentMode = contentMode
if let image = UIImage(named: imageName) {
self.image = image
}
}
这是图像在应用渲染之前在 Xcode 中的显示方式(您可以看到它的清晰度足够高):
【问题讨论】:
-
如何加载图像进行显示?您也可以将图像本身发布到某个地方吗?如果图像看起来像那样锯齿状,重命名它不会神奇地平滑它。
-
@matt - 感谢您的请求。我在自定义 ImageView 类中添加了设置图像的方法,并提供了图像在 xcode 中的外观(相当高的清晰度)。
-
也许考虑创建一个小示例代码来显示这个问题。然后检查出什么问题会更容易
-
如果图像视图的尺寸远小于图像尺寸(从屏幕截图中看起来是这样),您是否尝试过使用较小尺寸的图像?有时,即使“缩小尺寸”,图像也会像素化。因此,它足以使用在正确的 2x 尺寸下看起来非常清晰且非像素化的图像资源,即对于 80x80 uiimageview,2x 分辨率图像的尺寸只需要在 160x160 像素左右。
-
“真的很想弄清楚如何将高清添加到我现有的应用程序中。”但不够热衷于制作演示项目来展示您正在做的事情。
标签: ios xcode uiimageview uiimage retina