正确显示不是来自图像资产的视网膜图形

Displaying retina graphics correctly that aren't from the image assets

我对视网膜图像在 Xcode 中的工作方式有点困惑。我知道如果我使用图像资产,我可以分别为视网膜和 iPhone6+ 指定 2* 和 3* 图像,我只引用图像,其余的由 Xcode 完成。如果我使用的图像不是来自资产怎么办?举例来说,我正在服务器上存储用户个人资料图片的图像,如果我有一张 70*70pt 个人资料图片,我是否可以将图像设置为 140*140px 用于视网膜显示?对于 6 岁以上的孩子,我会这样做吗?定个210*210的?

只需在您的项目中包含图像,例如

  1. profile.png (70 X 70)正常
  2. profile@2x.png (140 X 140) 视网膜
  3. 配置文件@3x.png (210 X 210) 对于 iphone 6+ 设备

并在您的项目中正常使用。

UIImageView *imageView = [UIImageView imageNamed:@"profile.png"];

这与资产中的效果相同。

根据我的个人经验,当您将图片上传到服务器时,它会按原样保存。 例如:一张 70*70 像素的图片将被保存为 70*70 像素。

现在,您有 2 个选择。

  1. 当您使用该应用程序获取该图像时,它仅以 70*70 格式下载,并且该图像按原样显示在您的 UIImageView 中。然后,我建议您将 UIImageView 大小保持为 35*35 以保持图像清晰。

  2. 上传 210*210 像素的图像,然后使用该应用程序下载图像,然后再创建 2 个副本。一个70*70,一个140*140.

如果你可以在图像质量上做出一些妥协,我建议采用中间方法(140*140 像素的图像并将其显示在 70*70 像素的 UIImageView 中)。

我是这样做的;

• 将您的 UIImageView 设置为@1x 大小(即 70x70)。

• 下载您需要的正确分辨率资源(@1x 为 70x70,@2x 为 140x140 等)

• 使用 - (instancetype)initWithData:(NSData *)data scale:(CGFloat)scale 或类似方法创建 UIImage,并传入正确的比例。