我有一个问题,我只是无法弄清楚。我已经完成了一个应用程序,它将从正面拍摄一张照片,并从后置照相机拍摄一张照片,然后将它们合并在一起。以编程方式加载视网膜(高质量)图像(在按钮上)
应用程序的名称是GroupCam
但是我在我的UIButtons不会被加载从一开始就视网膜图像的问题。如果我在界面生成器上将它们设置为@ 2x,它们确实以高质量出现,但是一旦我以编程方式重新加载它们,低版本就会出现。
这是由于以下事实:拍摄照片并且屏幕改变按钮图像改变,但是当用户按下后退按钮时,相机图标看起来很可怕(因为正在加载低质量版本) 。
请检查下面的图片:
第一屏:显示只有右上角的按钮扭曲,因为我检查相机闪光灯的价值和“加载”编程相应的图像。
第二个屏幕:用户移动到另一个画面,又重新回到了第一个,所有按钮都重新加载,他们现在都看起来失真。
如果任何人有为什么会这样我会很感激的任何想法!
谢谢。
编辑:
这是我如何加载图像。
[self.flashButton setImage:[UIImage imageNamed:@"flashOff"]
forState:UIControlStateNormal];
我在网上的某个地方看过,这样做会自动加载最合适的图像版本。
我也试过,但结果是一样的:
[self.takeButton setImage:[UIImage imageNamed:@"takePhoto.png"] forState:UIControlStateNormal];
我在应用程序中使用正常和视网膜图像的效果很好。所以我建议你做的是选择这些图像的正常分辨率,而不是将它们包括在你的项目中(通过第三个最右边的窗格 - 只需取消选择复选框)。现在你的应用程序只有视网膜图像。那么,如果事情变坏,那么你的应用程序中的东西就搞砸了。 [UIImage imageNamed:foo.png]存在一些问题。如果您更改该图像,该图像的所有后续用户都将获得修改后的图像。重新读取UIImage imageNamed: –
所以我只是重新读你的问题,我刚刚看到这样的说法:“如果我在接口生成器上将它们设置为”@ 2x“”。因此,在IB中,您输入了他们的名字“[email protected]”,这是有效的。所以我可以想到的唯一的事情是你的问题可能是“@ 2x”的格式。你是否确定你已经正确地命名了这些图像 - “[email protected]”,NOT&2x.png等。看起来好像iOS没有看到hi rez文件,这是我能想到的唯一原因,这将解释它。所以请尝试删除IB中的“@ 2x”,看看会发生什么。我敢打赌,你一直都会得到所有低雷兹。 –
是的,它们被格式化并命名正确。这些图像将以HD完美加载,唯一的问题是当我以编程方式加载它们时。 iOS决定加载低分辨率的。 – Pochi