实现 UIImage 问题的所需解决方案

Posted

技术标签:

【中文标题】实现 UIImage 问题的所需解决方案【英文标题】:Achieving desired resolution of UIImage issue 【发布时间】:2014-03-14 15:06:49 【问题描述】:

我正在尝试创建自定义 annotationView。 我有一个 base.png 图像,其参数为 60x100 像素,分辨率为 72 像素/英寸。

在我的自定义 Annotation 对象中,我使用以下方法设置 annotationView 的图像:

-(MKAnnotationView *)annotationView
 
MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:self reuseIdentifier:@"MyAnnotation"];
annotationView.image = [UIImage imageNamed:@"base.png"];
return annotationView;

除了自定义 annotationView 的分辨率之外,一切都按预期工作。看起来像这样:

虽然,原图是这样的:

如您所见,它看起来过大,像素清晰可见。我没有任何前端经验可言,我不太了解分辨率以及 UIImage 如何通过调用 imageNamed 方法在后台设置其图像。

这里有什么问题?我是否需要更高分辨率的图像开始或不同尺寸的图像或其他东西??? ios 如何将原始 .png 图像(它的大小、分辨率等)转换为实际显示在设备上的图像?

【问题讨论】:

你展示的图片的文件名是什么? 如果是 base.png -- 使用 1:1 并将在视网膜上放大。 是base.png。因此,为了避免放大图像并使我的图像更清晰,我需要创建两倍于分辨率的附加图像,并将其命名为 base@2x.png,就像@Moshe 推荐的那样? 【参考方案1】:

查看 Apple 的 high resolution resources 网页。

基本上,这有两个部分。

    您是否将@2x 图像用于视网膜?您应该有一个名为 base@2x.png 的图像的双分辨率副本(在您的情况下为 120 x 200)。 除非您指定框架,否则 UIImageView 将自动采用其image 属性的大小。

看起来您的图钉和咖啡杯是两个不同的图像。我首先以双分辨率制作base@2x.png 图像。当您编写代码时,实际上并没有指定图像的 @2x 版本。您像以前一样编写代码,iOS 将寻找 Retina 分辨率副本并神奇地加载它而不是标准分辨率。您将需要这两个图像,如下所示:

确保将它们都添加到您的项目中。在代码中,你可以写[UIImage imageNamed:@"base.png"],在视网膜设备上,你会得到更清晰的图片。

至于图钉上咖啡的偏移量,您需要稍微调整一下该视图的框架(或约束,如果您使用的是自动布局)。

【讨论】:

以上是关于实现 UIImage 问题的所需解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何将批处理命令输出放在 csv 文件的所需列中

检查用户是不是具有任何列出的所需权限

如何设置 UITextField 的 inputAccessoryView 的所需位置?

客户无权访问 Firebase 中的所需数据

PHP:无法打开存在的所需文件

使用 awk 查找文件的所需属性