当我意识到我将不得不(可能?)为每个 UI 元素编写条件时,我几乎完成了我的应用程序的 iPhone 版本,因为它们使用不同的图形。这将使我的代码非常混乱。我有 15 种不同的自定义 UI 控件,我无法想象为每种方法设置条件(“如果 ipad 加载 image_ipad,如果 iphone 加载 image_iphone”)是最好的方法。任何人都可以提出一种特殊的技术来处理这个问题吗?或者有没有办法在视网膜和常规之间命名图像?
2 回答
您只需要传递基本图像名称..假设我们的图像名称是“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 将检测到最匹配的图像名称并加载它。
如果您想拥有视网膜和非视网膜版本,您只需在捆绑包中保存资产的两个版本。如果您的资产被称为 button.png 您保存:
-button.png 用于非视网膜版本。-button@2x.png 用于视网膜显示版本。
你的代码:
UIImage * myImage = [UIImage imageNamed:@"button.png"];
如果视网膜,系统将自动检查@2x.png,否则它将为非视网膜选择另一个
您可以将 myImage 放在您的自定义 UI 中,其余的由操作系统为您完成 ;-)