2014-07-03 3 views
5

Ich möchte für jede Sprache, die von meiner App unterstützt wird, ein Verzeichnis Images.xcassets verwenden.Der Name des Bildsatzes "xxx" wird von mehreren Bildsätzen mit lokalisiertem Asset-Katalog (.xcasts) verwendet.

So in den Finder habe ich ein Images.xcassets Verzeichnis in jedem .lproj Verzeichnis

enter image description here

enter image description here

In xCode ich habe:

enter image description here

Für beide die englischen und französischen xcassets haben sie englisch und französisch in localizat überprüft Ionenfeld in xCode.

enter image description here

Aber wenn ich kompilieren Ich habe Warnungen für alle meine Bilder in den Asset-Kataloge:

Das Bild Satzname „xxx“ durch mehrere Bild verwendet wird setzt

Wie kann ich den Fehler korrigieren?

Antwort

5

Sie können nicht zwei Bilder mit dem gleichen Namen auf xcassets haben.

Ich fand dies, weil ich ein Bild mit diesem Namen 'default.png' für iPad und andere mit dem gleichen Namen für iPhone innerhalb einer Datei von xcassets hatte. Der Grund für Ihre Warnung ist deshalb. Zwei Bilder mit dem gleichen Namen.

Die Lösung ist, ein Bild 'default.png' zu haben und innen die verschiedenen Geräte zu konfigurieren, die das Image unterstützt.

+0

Ja, ich verstehe, warum ich diesen Fehler habe. Aber das ist wirklich ärgerlich, weil xcasset lokalisierbar sein sollte. Gibt es eine Möglichkeit, Xcasts richtig zu lokalisieren? –

+0

Sie müssen verschiedene Ziele erstellen. Wenn Sie eine xcasset-Datei erstellen, müssen Sie diese Datei mit dem spezifischen Ziel verknüpfen. Überprüfen Sie diesen Link: [Link] (http://www.codeghost.co.uk/post/50912394435/multiple-ios-targets-from-a-single-xcode-project) – mrodriguez

0

Laut mehreren Quellen online können Sie Bilder in Asset-Katalogen nicht lokalisieren. Die meisten von ihnen verweisen auf Xcode 5.1.1, aber ab Xcode 6.1 scheint es, dass Sie sie immer noch nicht lokalisieren können. Es wird empfohlen, nur die Bilder aus den Asset-Katalogen zu entfernen und es auf die alte Art und Weise zu machen.

http://tang.io/wordpress/462

+0

Es ist unglaublich. Apple bietet eine neue Möglichkeit, Assets in einem Projekt zu verwalten, es ist jedoch nicht möglich, dort eine Lokalisierung zu verwenden. Warum? Was ist der Punkt? –

+3

Wenn Apple in Swift XCode neu schreibt, werden sie wahrscheinlich diese Funktion hinzufügen. Suchen Sie in XCode 9.2 danach. – odyth

0

Ich war etwas ähnliches zu wollen tue meine App-Symbole aus verschiedenen Asset-Katalogen tauschen, je nachdem ob ich gebaut debug, Ad-hoc-oder Release. Meine Lösung bestand darin, die Debug- und Ad-hoc-Kataloge in keine Ziele aufzunehmen und dann ein Laufskript in Swift zu schreiben, um diese Assets zur Laufzeit zu kopieren. Hier ist das Skript:

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

Ich stieß auch auf das gleiche Problem, meine Lösung ist: ein Bezeichner für jeden Zellensatz! enter image description here

Verwandte Themen