使用多目标图像目录
Using Multi-Target Image Catalog
我的应用程序有不同的目标,因为不同的客户端使用相同的应用程序,每个客户端都有自己的品牌。
在我的图像资产目录中,我有以下图像集:
Client123_LoginBackground
ClientABC_LoginBackground
ClientBFG_LoginBackground
等等
那么,在我设置此背景的应用程序中,如何告诉我的应用程序使用哪个图像集?
我能否以某种方式使用目标名称来执行此操作?
[UIImage imageNamed:@"{ClientABC}_LoginBackground"];
1) 向您的项目添加预处理器宏并根据标识不同客户端的每个目标定义其值:
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];
我的应用程序有不同的目标,因为不同的客户端使用相同的应用程序,每个客户端都有自己的品牌。
在我的图像资产目录中,我有以下图像集:
Client123_LoginBackground
ClientABC_LoginBackground
ClientBFG_LoginBackground
等等
那么,在我设置此背景的应用程序中,如何告诉我的应用程序使用哪个图像集?
我能否以某种方式使用目标名称来执行此操作?
[UIImage imageNamed:@"{ClientABC}_LoginBackground"];
1) 向您的项目添加预处理器宏并根据标识不同客户端的每个目标定义其值:
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];