代码之家  ›  专栏  ›  技术社区  ›  pablasso Jordan

界面生成器:根据目标选择媒体

  •  4
  • pablasso Jordan  · 技术社区  · 14 年前

    . 假装我有目标 JOHN 和目标 DOE . 我可以添加不同的图片 example.png

    UIImageView *image = [UIImageView alloc] initWithImage:[UIImage imageNamed:@"example.png"]];
    

    如果我按照不同的版本给每个图像命名,我会得到类似的结果:

    NSString *imageName;
    
    #ifdef JOHN
    imageName = @"johnExample.png";
    #else
    imageName = @"doeExample.png";
    #endif
    UIImageView *image = [UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]];
    

    有几个版本和许多图像,这很快就会变得混乱,而且有一个包含常量的大文件,在我看来,这是一种过度杀戮,所以我最终选择了第一个选项。

    在处理nibs文件时,Interface Builder只显示为 示例.png 厕所 IB刚刚决定加载 示例.png 雌鹿 目标。

    有没有办法让Interface Builder根据目标加载媒体?

    3 回复  |  直到 14 年前
        1
  •  1
  •   pablasso Jordan    14 年前

    结束这个问题,答案是: .

    从1月11日起,你不能基于界面构建器上的目标加载媒体,但是你可以使用一些解决方法,正如数字机器人和我自己在问题中的描述所指出的那样。

        2
  •  0
  •   Duck    14 年前

    为什么不在代码的开头定义这个

    #ifdef JOHN
    #define APP @"john"
    #elseif DOE
    #define APP @"doe"
    #endif
    

    imagename = [NSString stringWithFormat:@"%@Example.png", APP];
    
        3
  •  0
  •   Hermann Klecker    12 年前

    这应该管用。这可能是新的,因为一段时间过去了,我最近才知道。不知道这是否可能在很久以前,当你敏锐地问这个问题时:)但它可能对其他人寻找解决方案有用。

    (有点像文件的本地化版本。)

    您应该再次检查每个目标的生成设置中是否分别包含每个图像的正确版本。(复制边界资源) 这样做,“example.png”只包含在边界中一次。随机加载一个或另一个图像不应该再发生,尽管您在代码中将其称为“example.jpg”。