使用多目标图像目录

时间:2015-02-23 14:34:08

标签: xcode assets target

我的应用程序有各种目标,因为相同的应用程序被各种客户使用,每个客户都有自己的品牌。

在我的图片资产目录中,我有图像集,例如:

Client123_LoginBackground

ClientABC_LoginBackground

ClientBFG_LoginBackground

所以,在我设置此背景的应用程序中,如何告诉我的应用程序使用哪个图像集?

我可以以某种方式使用目标名称来执行此操作吗?

[UIImage imageNamed:@"{ClientABC}_LoginBackground"];

1 个答案:

答案 0 :(得分:1)

1)为项目添加预处理器宏,并根据识别不同客户端的每个目标定义其值:

Preprocessor macro

2)确保对所有相关目标和所有环境执行此操作。

3)创建这样的东西:

#define NSStringize_helper(x) #x
#define NSStringize(x) @NSStringize_helper(x)

+ (NSString *)clientName
{
#ifndef CLIENT_TYPE
  #error CLIENT_TYPE is not defined
#endif

  return NSStringize(CLIENT_TYPE);
}

4)现在你可以轻松地做到这一点:

NSString *imageNameString = [NSString stringWithFormat:@"%@_LoginBackground", self.class.clientName];
[UIImage imageNamed:imageNameString];