实现UIImage问题的理想解决方案

时间:2014-03-14 15:06:50

标签: ios objective-c uiimage

我正在尝试创建自定义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的解析之外,所有内容都按预期工作。它看起来像这样:customAnnotationView

虽然原始图像看起来像这样:

enter image description here

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

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

1 个答案:

答案 0 :(得分:1)

查看Apple的high resolution resources网页。

基本上,这有两个部分。

  1. 您是否在视网膜上使用@ 2x图像?您应该拥有名为base@2x.png的图像的双重分辨率副本(在您的情况下为120 x 200)。
  2. 除非指定框架,否则UIImageView将自动获取其image属性的大小。
  3. 看起来你的别针和你的咖啡杯是两个不同的图像。我首先以双倍分辨率制作base@2x.png图像。编写代码时,实际上并未指定图像的@ 2x版本。您可以按照自己的方式进行编码,iOS会查找Retina分辨率副本并神奇地加载它而不是标准分辨率。你需要两个图像,如下:

    Retina and standard resolution

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

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