我想为我的应用支持的每种语言使用一个Images.xcassets目录。
所以在finder中我在每个.lproj目录中放了一个Images.xcassets目录
在xCode中我有:
对于英语和法语xcassets,他们在xCode的本地化字段中检查了英语和法语。
但是当我编译时,我已经对资产目录中的所有图像发出了警告:
图像集名称" xxx"被多个图像集使用
如何更正错误?
答案 0 :(得分:5)
xcassets上不能有两个同名的图像。
我发现这是因为我有一个名为'default.png'的图像用于iPad,而其他图像用于iPhone的同名xcassets文件。你警告的原因是因为这个原因。两个同名的图像。
解决方案是使用一个图像'default.png'并在里面配置图像支持的不同设备。
答案 1 :(得分:0)
根据网上的几个消息来源,您无法在资产目录中本地化图像。他们中的大多数都引用了Xcode 5.1.1,但是从Xcode 6.1开始,你似乎仍然无法对它们进行本地化。建议只删除资产目录中的图像,并采用旧时尚方式。
答案 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)