图像集名称" xxx"由具有本地化资产目录(.xcassets)的多个图像集使用

时间:2014-07-03 13:03:01

标签: ios xcode

我想为我的应用支持的每种语言使用一个Images.xcassets目录。

所以在finder中我在每个.lproj目录中放了一个Images.xcassets目录

enter image description here

enter image description here

在xCode中我有:

enter image description here

对于英语和法语xcassets,他们在xCode的本地化字段中检查了英语和法语。

enter image description here

但是当我编译时,我已经对资产目录中的所有图像发出了警告:

  

图像集名称" xxx"被多个图像集使用

如何更正错误?

4 个答案:

答案 0 :(得分:5)

xcassets上不能有两个同名的图像。

我发现这是因为我有一个名为'default.png'的图像用于iPad,而其他图像用于iPhone的同名xcassets文件。你警告的原因是因为这个原因。两个同名的图像。

解决方案是使用一个图像'default.png'并在里面配置图像支持的不同设备。

答案 1 :(得分:0)

根据网上的几个消息来源,您无法在资产目录中本地化图像。他们中的大多数都引用了Xcode 5.1.1,但是从Xcode 6.1开始,你似乎仍然无法对它们进行本地化。建议只删除资产目录中的图像,并采用旧时尚方式。

http://tang.io/wordpress/462

答案 2 :(得分:0)

我正在做类似的事情,想要从不同的资产目录中换出我的应用程序图标,具体取决于我是否构建了调试,临时或发布。我的解决方案是不在任何目标中包含调试和临时目录,然后在Swift中编写运行脚本以在运行时复制这些资产。这是脚本:

import Foundation

struct CopyNonReleaseIcons: Script {

    var usage: String {
        return "When running a non-release (Debug or AdHoc) build, switches out the app icon to help" +
            "differentiate between builds on the home screen.\n\n" +
            "Usage: swift CopyNonReleaseIcons.swift <CONFIGURATION> <PRODUCT_NAME> <BUILD_PATH>"
    }

    var expectedNumberOfArguments = 3

    func run(arguments arguments: [String]) {
        let configuration = arguments[0]
        let productName = arguments[1]
        let buildPath = arguments[2]

        if configuration == "Debug" || configuration == "AdHoc" {
            copyIcons(buildName: configuration, productName: productName, buildPath: buildPath)
        }
    }

    func copyIcons(buildName buildName: String, productName: String, buildPath: String) {
        let sourcePath = "My App/Resources/Asset Catalogs/" + productName + "SpecificAssets-" + buildName + "Icons.xcassets/AppIcon.appiconset/"

        var appName = "My App.app"
        if (productName == "White Label") {
            appName = "White Label.app"
        }

        shell(launchPath: "/bin/cp", arguments: ["-rf", sourcePath, buildPath + "/" + appName])
    }
}

CopyNonReleaseIcons().run()

答案 3 :(得分:0)

我也遇到了同样的问题,我的解决方案是:每个单元格的标识符! enter image description here