Retina icons (@2x) aren#39;t being used when images are specified in code(在代码中指定图像时,不使用 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)
基础教程推荐
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01