我的应用程序有各种目标,因为相同的应用程序被各种客户使用,每个客户都有自己的品牌。
在我的图片资产目录中,我有图像集,例如:
Client123_LoginBackground
ClientABC_LoginBackground
ClientBFG_LoginBackground
等
所以,在我设置此背景的应用程序中,如何告诉我的应用程序使用哪个图像集?
我可以以某种方式使用目标名称来执行此操作吗?
[UIImage imageNamed:@"{ClientABC}_LoginBackground"];
答案 0 :(得分:1)
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];