2014-07-03 8 views
5

Chciałbym użyć jednego katalogu Images.xcassets dla każdego języka obsługiwanego przez moją aplikację.Nazwa zestawu obrazów "xxx" jest używana przez wiele zestawów obrazów w zlokalizowanym katalogu zasobów (.xcassets).

Więc w znalazcy kładę katalogu jeden Images.xcassets w każdym katalogu .lproj

enter image description here

enter image description here

w Xcode mam:

enter image description here

Dla obu angielski i francuski xcassets mają angielski i francuski sprawdzony w localizat pole jonowe w kodzie X.

enter image description here

Ale kiedy mogę skompilować Mam ostrzeżenia dla wszystkich moich obrazów w katalogach aktywów:

Obraz set name „xxx” jest używane przez wiele obrazu ustawia

Jak mogę poprawić błąd?

Odpowiedz

5

Nie można mieć dwóch obrazów o tej samej nazwie w plikach xcassets.

Znalazłem to, ponieważ miałem jeden obraz o tej nazwie "default.png" dla iPada i inne o tej samej nazwie dla iPhone'a w pliku xcassets. Przyczyna ostrzeżenia jest z tego powodu. Dwa obrazy o tej samej nazwie.

Rozwiązaniem jest posiadanie jednego obrazu 'default.png' i wewnątrz konfiguracja różnych urządzeń obsługiwanych przez obraz.

+0

Tak Rozumiem, dlaczego mam ten błąd. Ale to naprawdę denerwujące, ponieważ xcasset powinien być lokalizowalny. Czy istnieje sposób na prawidłowe zlokalizowanie xcassets? –

+0

Musisz utworzyć różne cele. Kiedy tworzysz plik xcasset, musisz połączyć ten plik z określonym celem. Sprawdź ten link: [link] (http://www.codeghost.co.uk/post/50912394435/multiple-ios-targets-from-a-single-xcode-project) – mrodriguez

0

Według wielu źródeł online nie można zlokalizować zdjęć w katalogach zasobów. Większość z nich odnosi się do Xcode 5.1.1, jednak od Xcode 6.1 wygląda na to, że nadal nie możesz ich zlokalizować. Zaleca się po prostu usunąć zdjęcia z katalogów zasobów i zrobić to w starym stylu.

http://tang.io/wordpress/462

+0

To niewiarygodne. Firma Apple udostępnia nowy sposób zarządzania zasobami w projekcie, ale nie zezwala na lokalizowanie na nim. Czemu? Jaki jest sens? –

+3

Kiedy Apple kończy przepisywanie kodu X w Swift prawdopodobnie dodadzą tę funkcję. Szukaj go w XCode 9.2. – odyth

0

robiłem coś podobnego w chcąc zamienić moje ikony aplikacji z różnych katalogów aktywów w zależności od tego, czy zbudowałem debug, ad hoc, lub zwolnienie. Moim rozwiązaniem było nie umieszczanie katalogów debugowania i ad-hoc w żadnych celach, a następnie napisanie skryptu uruchamiania w Swift, aby skopiować te zasoby w czasie wykonywania. Oto skrypt:

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

Też napotkałem ten sam problem, moje rozwiązanie to: identyfikator dla każdego zestawu komórek! enter image description here

Powiązane problemy