实现 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 问题的所需解决方案的主要内容,如果未能解决你的问题,请参考以下文章