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

Poc*_*chi 5 ios

我有一个问题,我只是无法搞清楚.我有一个应用程序完成,将从前面拍摄一张照片,从后置照相机拍摄一张照片,然后将它们合并在一起.

该应用程序的名称是GroupCam

但是我有一个问题,我的UIButtons从一开始就不会作为视网膜图像加载.如果我在界面构建器上将它们设置为@ 2x它们确实以高质量显示,但是一旦我以编程方式重新加载它们,则会出现低版本.

这是因为在拍摄照片并且屏幕改变后按钮图像改变,但是当用户按下后退按钮时,相机图标看起来很糟糕(因为正在加载低质量版本).

请查看以下图片:

第一个屏幕: 只有右上角按钮显示失真,因为我正在检查相机闪光灯的值并以编程方式"加载"相应的图像.

第一个屏幕

第二个屏幕: 用户已移动到另一个屏幕并返回到第一个屏幕,所有按钮都重新加载,现在它们看起来都很扭曲.

第二个屏幕

如果有人知道为什么会发生这种情况,我会非常感激!

谢谢.

编辑:

这是我加载图像的方式.

[self.flashButton setImage:[UIImage imageNamed:@"flashOff"] 
                          forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

我在互联网上的某处读到,这样做会自动加载最合适的图像版本.

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

[self.takeButton setImage:[UIImage imageNamed:@"takePhoto.png"] forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

sri*_*jay 3

如果您的应用程序从前置摄像头拍摄一张照片,从后置摄像头拍摄一张照片并将它们合并在一起,则该设备需要前置摄像头。所有具有前置摄像头的 iOS 设备也都具有视网膜显示屏(只要您不是针对 iPad 2 进行开发,但这是一个不同的故事),因此您实际上根本不需要拥有普通图像,因此您的所有图像都应该是视网膜图像。如果没有正常的图像,那么这个问题根本不应该发生。制作一个备份副本,并尝试删除所有正常图像,然后再尝试。因为您使用 UIImage imageNamed:@"ImageName",就像您所说,应该自动选择图像!祝你好运!