我正在将我的iPhone应用程序升级到高分辨率图形,我遇到了旧设备的一些问题。这种情况涉及我的UITabBar图标。看看:
顶部截图看起来是正确的。它是在运行OS4的最新一代iPhone(新屏幕)上捕获的。但是,第二个截图是完全错误的。高分辨率图标以100%大小显示并且正在被裁剪。第二张截图是从运行OS4的第二代iPod touch(旧屏幕)中获取的。
所以,我真的很困惑。我已经阅读了Apple的文档,据我所知,我正在做他们需要的一切。在我的应用程序包中,我的图像命名为:
在界面构建器中,我指定了要在标签栏中使用的每个图像的低分辨率版本(文件名为WITHOUT“@ 2x”)。如果我正确理解iPhone文档,设备应自动检测屏幕分辨率并显示高分辨率版本(如果可用)。因此,如果有的话,我的iPod touch几乎看不到它的显示分辨率。我在这里错过了什么吗?
任何可以提供的帮助或见解将不胜感激!感谢。
更新1:
到目前为止没有运气。我采用了手动方法,并将以下内容添加到viewDidLoad
的{{1}}命令中:
UITabBarController
这仍然产生与上面相同的结果(标签栏中的大截止图标)。有没有人听说过UITabBar填充高分辨率图标对的问题?
更新2:
关于詹姆斯的评论:
是的,我能够解决这个问题。在XCode中,文件引用似乎是一个错误。我的想法已经用完了,所以我回过头来开始从我的应用程序中删除所有的@ 2x图像,只是为了让所有内容再次使用低分辨率的艺术作品正确显示。一旦应用程序再次显示适当大小的图像(虽然分辨率很低),然后我逐一添加@ 2x图像,等待一些东西中断。第二次进入似乎工作正常。不知道为什么或发生了什么。 SDK似乎只是为了发生了什么而交换了一些电线。
答案 0 :(得分:4)
据我所知,神奇的是UIImage的imageNamed:
,imageWithContentsOfFile:
和initWithContentsOfFile:
方法。传递其中一个没有“@ 2x”或文件扩展名的NSString文字,它会神奇地找到适合您设备的文件版本。
其中一个含义是,标签栏项目的图像需要以编程方式设置。可能是IB还不够聪明,无法根据设备分辨率编写动态选择图像的笔尖。因此,请尝试使用-viewDidLoad
方法手动设置这些图片。
答案 1 :(得分:0)
尝试省略.png文件扩展名。这样做会触发操作系统适当地查找低分辨率文件和@ 2x版本。这在Apple的“支持高分辨率屏幕”概述中有记录。
答案 2 :(得分:0)
根据Apple的设计指南,UITabBarItem图像的大小应为30x30和60x60(视网膜)。
我遇到了同样的问题,并通过调整图像大小来解决它。