高分辨率UITabBar图标在低分辨率屏幕上以全尺寸显示

时间:2010-07-07 21:06:36

标签: iphone xcode

我正在将我的iPhone应用程序升级到高分辨率图形,我遇到了旧设备的一些问题。这种情况涉及我的UITabBar图标。看看:

alt text

顶部截图看起来是正确的。它是在运行OS4的最新一代iPhone(新屏幕)上捕获的。但是,第二个截图是完​​全错误的。高分辨率图标以100%大小显示并且正在被裁剪。第二张截图是从运行OS4的第二代iPod touch(旧屏幕)中获取的。

所以,我真的很困惑。我已经阅读了Apple的文档,据我所知,我正在做他们需要的一切。在我的应用程序包中,我的图像命名为:

  • 制表featured.png
  • tab-featured@2x.png
  • 制表topics.png
  • tab-topics@2x.png
  • (...等...)

在界面构建器中,我指定了要在标签栏中使用的每个图像的低分辨率版本(文件名为WITHOUT“@ 2x”)。如果我正确理解iPhone文档,设备应自动检测屏幕分辨率并显示高分辨率版本(如果可用)。因此,如果有的话,我的iPod touch几乎看不到它的显示分辨率。我在这里错过了什么吗?

任何可以提供的帮助或见解将不胜感激!感谢。

更新1:

到目前为止没有运气。我采用了手动方法,并将以下内容添加到viewDidLoad的{​​{1}}命令中:

UITabBarController

这仍然产生与上面相同的结果(标签栏中的大截止图标)。有没有人听说过UITabBar填充高分辨率图标对的问题?

更新2:

关于詹姆斯的评论:

是的,我能够解决这个问题。在XCode中,文件引用似乎是一个错误。我的想法已经用完了,所以我回过头来开始从我的应用程序中删除所有的@ 2x图像,只是为了让所有内容再次使用低分辨率的艺术作品正确显示。一旦应用程序再次显示适当大小的图像(虽然分辨率很低),然后我逐一添加@ 2x图像,等待一些东西中断。第二次进入似乎工作正常。不知道为什么或发生了什么。 SDK似乎只是为了发生了什么而交换了一些电线。

3 个答案:

答案 0 :(得分:4)

据我所知,神奇的是UIImage的imageNamed:imageWithContentsOfFile:initWithContentsOfFile:方法。传递其中一个没有“@ 2x”或文件扩展名的NSString文字,它会神奇地找到适合您设备的文件版本。

其中一个含义是,标签栏项目的图像需要以编程方式设置。可能是IB还不够聪明,无法根据设备分辨率编写动态选择图像的笔尖。因此,请尝试使用-viewDidLoad方法手动设置这些图片。

答案 1 :(得分:0)

尝试省略.png文件扩展名。这样做会触发操作系统适当地查找低分辨率文件和@ 2x版本。这在Apple的“支持高分辨率屏幕”概述中有记录。

答案 2 :(得分:0)

根据Apple的设计指南,UITabBarItem图像的大小应为30x30和60x60(视网膜)。

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html

我遇到了同样的问题,并通过调整图像大小来解决它。