当我意识到我必须(可能?)为每个UI元素编写条件因为他们使用不同的图形时,我几乎完成了我的应用程序的iPhone版本。这将使我的代码非常混乱。我有15种不同的自定义UI控件,我无法想象为每种方法设置条件("如果ipad加载image_ipad,如果iphone加载image_iphone")是最好的方法。任何人都可以建议一个特定的技术来处理这个?或者有没有办法在视网膜和常规之间命名图像?
答案 0 :(得分:7)
您只需要传递基本图像名称..假设我们的图像名称是“Apple.png”,那么您将编写像此UIImage *image = [UIImage ImageNamed:@"Apple.png"]
这样的获取图像名称以及图像的名称以下案例将是:
1. iPad >放〜ipad,图片名称为"Apple~ipad.png"
2. iPhone > put~iphone,图片名称为"Apple~iphone.png"
3.对于视网膜显示>放@ 2x,图片名称为"Apple@2x.png"
4.如果您拥有用于ipad和iphone的视网膜 diplay的 diffrenet 图片,那么对于iPad "Apple@2x~ipad.png"
,对于iPhone来说,它就像这样{1}}
如果您将其命名为此,iOS将检测最佳匹配图像名称并加载它。
答案 1 :(得分:2)
如果您想拥有视网膜和非视网膜的版本,您只需要在捆绑包中保存两个版本的资产。如果您的资产名为button.png,则保存:
-button.png为非视网膜版本。 -button@2x.png用于视网膜显示器版本。
您的代码:
UIImage * myImage = [UIImage imageNamed:@"button.png"];
如果是视网膜,系统会自动检查@ 2x.png,否则系统将为非视网膜选择另一个
您可以将myImage放在自定义用户界面中,操作系统会为您完成剩下的工作; - )