在代码中指定图像时,不使用 Retina 图标 (@2x)

Retina icons (@2x) aren#39;t being used when images are specified in code(在代码中指定图像时,不使用 Retina 图标 (@2x))

本文介绍了在代码中指定图像时,不使用 Retina 图标 (@2x)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的视图上放置了一个 play.png 图像.当视图最初加载时,iPhone 4 会抓取相应的 play@2x.png 文件,它看起来很棒.但是,当我点击播放按钮时,我的代码会将其换成 pause.png 文件.然后,当我点击 pause.png 以恢复 play.png 时,它使用原始 play.png 文件(不是我认为它会自动引用的 @2x 版本).

I place a play.png image onto my view. When the view initially loads, the iPhone 4 grabs the corresponding play@2x.png file and it looks great. However, when I tap the play button my code swaps it out for the pause.png file. Then, when I tap the pause.png to bring back the play.png it uses the original play.png file (not the @2x version like I thought it would automatically reference).

这是我尝试使用的代码:

This is the code I tried to use:

[button setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];

那么,如果我在初始视图加载后交换文件,我是否必须在 IF 语句中手动指定 @2x 版本?如果是这样,UIScreen.scale 是用于此的最佳属性吗?

So, if I swap files after the initial view load, do I have to manually specify the @2x version inside an IF statement? If so, is the UIScreen.scale the best attribute to use for this?

我目前正在使用这样的代码:

I'm currently using code like this:

if ([UIScreen mainScreen].scale > 1.0) 
{ 
    [button setImage:[UIImage imageNamed:@"play@2x.png"] forState:UIControlStateNormal]; 
} 
else 
{ 
    [button setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal]; 
}

它工作正常,但是里面有 IF 语句很烦人,而且看起来有点脆弱.

It's working fine but having the IF statement in there is annoying and seems a little fragile.

在此先感谢你们所有的聪明人.

Thanks in advance to all you smarties out there.

推荐答案

我可以确认这是 4.0 设备的问题.问题不在于它不加载 @2x 图像,它确实加载了,但仍以 72 DPI 显示它(导致它模糊).

I can confirm that this is a problem with the 4.0 device. The problem is not that it does not load the @2x image, it does indeed, but still displays it at 72 DPI (causing it to be blurry).

幸运的是,这个错误在 4.1 中得到了修复(在模拟器中测试).

This bug is fortunately fixed in 4.1 (tested in the emulator).

这篇关于在代码中指定图像时,不使用 Retina 图标 (@2x)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:在代码中指定图像时,不使用 Retina 图标 (@2x)

基础教程推荐