【发布时间】:2010-08-09 16:47:43
【问题描述】:
我在我的视图上放置了一个 play.png 图像。当视图最初加载时,iPhone 4 会抓取相应的 play@2x.png 文件,它看起来很棒。但是,当我点击播放按钮时,我的代码会将其换成 pause.png 文件。然后,当我点击 pause.png 以恢复 play.png 时,它使用原始 play.png 文件(不是我认为它会自动引用的 @2x 版本)。
这是我尝试使用的代码:
[button setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
那么,如果我在初始视图加载后交换文件,我是否必须在 IF 语句中手动指定 @2x 版本?如果是这样,UIScreen.scale 是用于此的最佳属性吗?
我目前正在使用这样的代码:
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 语句很烦人,而且看起来有点脆弱。
在此先感谢你们所有的聪明人。
【问题讨论】:
-
请发布您如何交换图像...
UIImage imageNamed通常会自动处理它,而其他方法还没有(目前) -
[按钮 setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
-
现在我正在使用以下内容(对不起,我不知道如何将代码格式化为代码): 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 语句很烦人,而且看起来有点脆弱。
-
@nicjohnson - 我在问题中插入了来自您的 cmets 的代码。希望我正确地传达了您的意思。将来,您应该能够编辑问题以插入这样的代码,然后使用文本上方编辑工具栏中的代码选项对其进行格式化(或在每行代码前使用四个空格)。
-
谢谢,布拉德。因此,据您所知,即使我在 play.png 和 pause.png 之间来回切换,imageName 也应该能够引用 play.png 并自动交换 @2x 版本?
标签: iphone ios4 retina-display