7

当我意识到我将不得不(可能?)为每个 UI 元素编写条件时,我几乎完成了我的应用程序的 iPhone 版本,因为它们使用不同的图形。这将使我的代码非常混乱。我有 15 种不同的自定义 UI 控件,我无法想象为每种方法设置条件(“如果 ipad 加载 image_ipad,如果 iphone 加载 image_iphone”)是最好的方法。任何人都可以提出一种特殊的技术来处理这个问题吗?或者有没有办法在视网膜和常规之间命名图像?

4

2 回答 2

7

您只需要传递基本图像名称..假设我们的图像名称是“Apple.png”,然后您将像这样编写获取图像名称UIImage *image = [UIImage ImageNamed:@"Apple.png"],并且以下情况的图像名称将是:

1. iPad > put ~ipad ,图片名称将是"Apple~ipad.png"

2. iPhone > put ~iphone ,图片名称为"Apple~iphone.png"

3.对于retina display > put @2x ,图像名称将是"Apple@2x.png"

4.如果你有适用于ipad和 iphone 的视网膜显示的不同图像,它将是这样的,,对于 iPad "Apple@2x~ipad.png",,对于 iPhone"Apple@2x~iphone.png"

如果你这样命名它,iOS 将检测到最匹配的图像名称并加载它。

于 2012-06-10T14:14:14.883 回答
2

如果您想拥有视网膜和非视网膜版本,您只需在捆绑包中保存资产的两个版本。如果您的资产被称为 button.png 您保存:

-button.png 用于非视网膜版本。-button@2x.png 用于视网膜显示版本。

你的代码:

UIImage * myImage = [UIImage imageNamed:@"button.png"];

如果视网膜,系统将自动检查@2x.png,否则它将为非视网膜选择另一个

您可以将 myImage 放在您的自定义 UI 中,其余的由操作系统为您完成 ;-)

于 2012-06-10T14:14:06.863 回答