我正在尝试创建自定义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图像(它的大小,分辨率等)转换为实际显示在设备上的图像?
答案 0 :(得分:1)
查看Apple的high resolution resources网页。
基本上,这有两个部分。
base@2x.png
的图像的双重分辨率副本(在您的情况下为120 x 200)。image
属性的大小。 看起来你的别针和你的咖啡杯是两个不同的图像。我首先以双倍分辨率制作base@2x.png
图像。编写代码时,实际上并未指定图像的@ 2x版本。您可以按照自己的方式进行编码,iOS会查找Retina分辨率副本并神奇地加载它而不是标准分辨率。你需要两个图像,如下:
确保将它们都添加到项目中。在代码中,您可以编写[UIImage imageNamed:@"base.png"]
,在视网膜设备上,您将获得更清晰的图片版本。
至于针脚上咖啡的偏移量,您需要稍微使用该视图的框架(或约束,如果您使用的是自动布局)。