以编程方式加载视网膜(高质量)图像(在button上)

我有一个问题,我只是无法弄清楚。 我有一个应用程序,将从前面拍摄一张照片,然后将相机合并在一起。

该应用程序的名称是GroupCam

不过,我的UIButtons从一开始就不会被加载为视网膜图像。 如果我在界面生成器上将它们设置为@ 2x,它们确实以高质量出现,但是一旦我以编程方式重新加载它们,低版本将会出现。

这是由于这样一个事实,即在拍摄照片并且屏幕改变button图像改变之后,但是当用户按下后退button时,相机图标看起来很可怕(因为正在加载低质量版本)。

请检查以下图片:

第一个屏幕:只有右上angular的button出现扭曲,因为我正在检查相机闪光灯的值,并以编程方式“加载”相应的图像。

第一个屏幕

第二个屏幕:用户已经移动到另一个屏幕并返回到第一个屏幕,所有的button被重新加载,现在他们都看起来扭曲。

第二个屏幕

如果有人有任何想法,为什么会发生这种情况,我真的很感激!

谢谢。

编辑:

这是我如何加载图像。

[self.flashButton setImage:[UIImage imageNamed:@"flashOff"] forState:UIControlStateNormal]; 

我在互联网上的某个地方阅读,这样做会自动加载最合适的图像版本。

我也试过这个,但结果是一样的:

 [self.takeButton setImage:[UIImage imageNamed:@"takePhoto.png"] forState:UIControlStateNormal]; 

如果您的应用程序正在从前置摄像头和后置摄像头拍照并将它们合并在一起,则该设备需要前置摄像头。 所有拥有前置摄像头的iOS设备也都具有视网膜显示屏(只要您不是为iPad 2开发的,但这是另外一回事),所以您根本不必拥有正常的图像,因此所有的图像都应该是视网膜图像。 如果没有正常的图像,那么这个问题就不应该发生。 做一个备份副本,并尝试删除所有正常的图像,然后尝试。 因为你使用的是UIImage imageNamed:@“ImageName”,就像你说的那样,应该自动select图片! 祝你好运!

首先,它可能值得validation的是低分辨率版本实际上正在显示。 我最近跳到了一个类似的假设,换了一些不同的东西,低分辨率的图像版本,并确认高分辨率版本实际上仍在显示,但被扭曲。

我的实际问题,我已经设置

<uibutton_superview>.layer.shouldRasterize = YES;

如果任何button祖先有这个设置,它可能是你的问题。

模拟器上的图像的文件名的情况并不重要,但在设备上。

使用所有一致的情况。 Image.png和image@2x.png被识别,并将在模拟器中一起工作,但不在设备上。 使用image.png和image@2x.png。 或者,只要大小写匹配,您也可以使用.jpg。