Interface Builder:根据目标选择媒体

pab*_*sso 5 iphone objective-c interface-builder ios

在 Xcode 中,我使用目标来发布多个应用程序版本,这些版本共享一些基本代码并且往往具有不同的图形。

IE。假装我有目标JOHN和目标DOE。我可以将准确命名的不同图像添加example.png到捆绑包中,并分别针对每个图像。这样代码不需要任何更改。

UIImageView *image = [UIImageView alloc] initWithImage:[UIImage imageNamed:@"example.png"]];
Run Code Online (Sandbox Code Playgroud)

相反,如果我为每个不同版本的图像命名,我最终会得到类似的结果:

NSString *imageName;

#ifdef JOHN
imageName = @"johnExample.png";
#else
imageName = @"doeExample.png";
#endif
UIImageView *image = [UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]];
Run Code Online (Sandbox Code Playgroud)

拥有多个版本和许多图像很快就会变得混乱,并且拥有一个包含常量的巨大文件在我看来有点过分了,所以我最终选择了第一个选择。

问题是:

在处理 nibs 文件时,Interface Builder 似乎只是随机加载example.png。因此,如果我正在处理目标,那么 IB 刚刚决定从目标JOHN加载就会很烦人。example.pngDOE

Interface Builder 有什么方法可以根据目标加载媒体吗?

pab*_*sso 1

只是为了结束这个问题,答案是:

截至 11 年 1 月,您无法根据 Interface Builder 上的目标加载媒体,但您可以使用一些解决方法,正如 Digital Robot 和我自己在问题中的描述所指出的那样。