Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 使用多目标图像目录_Xcode_Assets_Target - Fatal编程技术网

Xcode 使用多目标图像目录

Xcode 使用多目标图像目录,xcode,assets,target,Xcode,Assets,Target,我的应用程序有不同的目标,因为不同的客户端使用相同的应用程序,每个客户端都有自己的品牌 在我的图像资源目录中,我有图像集,例如: 客户123_登录背景 ClientABC_登录背景 客户端bfg_登录背景 等等 那么,在我设置背景的应用程序中,我如何告诉我的应用程序要使用哪个图像集 我是否可以使用目标名称来执行此操作 [UIImage imageNamed:@"{ClientABC}_LoginBackground"]; 1) 将预处理器宏添加到项目中,并根据标识不同客户端的每个目标定义其值:

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

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

客户123_登录背景

ClientABC_登录背景

客户端bfg_登录背景

等等

那么,在我设置背景的应用程序中,我如何告诉我的应用程序要使用哪个图像集

我是否可以使用目标名称来执行此操作

[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];

有没有办法确定在每种情况下选择了哪种图像比例(1x、2x、3x等)?图像比例背后的想法是,您不必知道选择了哪一个,这取决于设备,您始终可以确定它将是相关设备的正确图像比例。如果你真的想识别设备,有很多方法可以做到,比如我正试图调试它为什么不工作。背景按预期工作,但现在我无法将其用于显示徽标的UIImageView。好的,在初始化过程中无法将图像分配给UIImageView,将其移动到ViewDidLoad,它就工作了。再次感谢!很好的一点,如果您的图像视图是对Interface Builder中创建的元素的引用(
IBOutlet
),它们在
init
方法期间未就绪,您可以通过在其中放置断点来检查这一点,并尝试在控制台中使用
po self打印它。yourImageView
,它将为零。您可以在您提到的
viewDidLoad
期间或在
awakeFromNib
中设置其图像。