我正在尝试创建自定义注释 View 。 我有一个 base.png 图像,其参数为 60x100 像素,分辨率为 72 像素/英寸。
在我的自定义Annotation对象中,我使用以下方法设置annotationView的图像:
-(MKAnnotationView *)annotationView
{
MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:self reuseIdentifier:@"MyAnnotation"];
annotationView.image = [UIImage imageNamed:@"base.png"];
return annotationView;
}
除了自定义注释 View 的解析之外,一切都按预期工作。它看起来像这样:
虽然,原始图像看起来像这样:
正如您所看到的,它看起来尺寸过大,像素清晰可见。我没有任何前端经验可言,我不太了解分辨率以及 UIImage 如何通过调用 imageNamed 方法在后台设置图像。
这里有什么问题吗?我是否需要更高分辨率的图像开始或不同尺寸的图像或其他东西??? iOS 如何将原始 .png 图像(大小、分辨率等)转换为设备上实际显示的图像?
最佳答案
看看 Apple 的 high resolution resources网页。
本质上,这有两个部分。
- 您使用的是@2x 视网膜图像吗?您应该有一份名为
base@2x.png
的图像的双分辨率副本(在您的例子中为 120 x 200)。 - 除非您指定框架,否则 UIImageView 将自动采用其
image
属性的大小。
您的图钉和咖啡杯看起来像是两个不同的图像。我将从以双倍分辨率制作 base@2x.png
图像开始。当您编写代码时,您实际上并未指定图像的@2x 版本。你像你一样编码,iOS 将寻找 Retina 分辨率副本并神奇地加载它而不是标准分辨率。您将需要这两个图像,如下所示:
确保将它们都添加到您的项目中。在代码中,您将编写 [UIImage imageNamed:@"base.png"]
并且在 Retina 设备上,您将获得更清晰的图片版本。
至于咖啡在图钉上的偏移,您需要稍微调整该 View 的框架(或约束,如果您使用自动布局)。
关于ios - 实现 UIImage 问题的预期解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22408752/