“xxx”图像集名称被多个带有本地化资源目录(.xcassets)的图像集使用。

6
我想为我的应用程序中支持的每种语言使用一个Images.xcassets目录。因此,我在每个.lproj目录中放置了一个Images.xcassets目录。
在xCode中,对于英语和法语的xcassets,它们在本地化字段中都选中了英语和法语。
但是,在编译时,所有Asset Catalogs中的图像都会显示警告:
“图片集名称“xxx”被多个图片集使用。”
如何纠正错误?
4个回答

6

在xcassets中不能有两个同名的图片。

我发现这是因为我在xcassets文件夹中有一个名为"default.png"的iPad图片和另一个名为"default.png"的iPhone图片。你收到警告的原因就是这样。两张同名的图片。

解决方法是只保留一张"default.png"图片,然后在内部配置支持不同设备的图片。


是的,我明白为什么会出现这个错误。但这真的很烦人,因为xcasset应该是可本地化的。有没有一种正确的方法来本地化xcassets? - Jean Lebrument
你需要创建不同的目标。当你创建一个xcasset文件时,你必须将该文件链接到特定的目标。请查看此链接:link - mrodriguez

1

我想做类似的事情,希望能够根据构建debug、ad-hoc或release版本切换不同的应用程序图标。我的解决方案是不在任何目标中包含debug和ad-hoc目录,然后编写一个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()

0

根据在线的多个来源,您无法在资源目录中本地化图像。其中大部分参考了Xcode 5.1.1,然而在Xcode 6.1中似乎仍然无法本地化它们。建议只需从资源目录中删除图像并采用传统方式进行操作。

http://tang.io/wordpress/462


这真是令人难以置信。苹果提供了一种新的管理项目资产的方式,但不允许在其中使用本地化。为什么?这有什么意义呢? - Jean Lebrument
3
当苹果公司用Swift重写XCode之后,他们可能会添加这个功能。请在XCode 9.2中寻找它。 - odyth

0

我也遇到了同样的问题,我的解决方案是:为每个单元格集合设置一个标识符! 在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接