it-swarm.com.de

Programmgesteuerter Zugriff auf Asset Catalog

Ich weiß, dass es sich um eine neue Funktion handelt und dies möglicherweise nicht möglich ist, aber ich würde gerne einen Asset-Katalog verwenden, um meine Assets zu organisieren, aber ich greife programmgesteuert auf alle meine Bilder zu. Wie würde ich jetzt auf meine Bilder zugreifen? Greife ich immer noch über die folgenden Dateinamen auf sie zu:

[UIImage imageNamed:@"my-asset-name.png"];

Scheinbar verweist der Asset-Katalog nicht auf die Erweiterung. Wäre es also effizienter, ohne ".png" darauf zuzugreifen?

Der Grund, warum ich nachfragen muss, anstatt mich selbst zu testen, ist, dass ich auch nach dem Entfernen meiner Assets und des Asset-Katalogs und dem Bereinigen des Build-Ordners in meiner Anwendung noch auf meine Assets zugreifen kann. Dies hindert mich daran, den Asset-Katalog zu testen, wenn ich ihn implementiere.

Nach dem Durchsuchen des Asset-Katalogs habe ich für jedes Asset die Datei "Contents.json" gefunden, die folgendermaßen formatiert ist:

{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x",
      "filename" : "[email protected]"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

Ich bin mir immer noch nicht sicher, wie ich darauf zugreifen soll, aber vielleicht hilft das?

91
RileyE

Um über den Asset-Katalog auf das Image zuzugreifen, müssen Sie nur auf den Namen der Asset-Gruppe ohne Erweiterungen zugreifen.

Wenn Sie also ein Bild mit dem Namen @"[email protected]" Zum Asset-Katalog hinzufügen, wird eine Asset-Gruppe mit dem Namen my-button Erstellt.

Jetzt müssen Sie nur noch wie folgt auf das Bild zugreifen:

// Objective-C
[UIImage imageNamed:@"my-button"];
// Swift
UIImage(named: "my-button")

Sie können die Asset-Gruppe auch bearbeiten, indem Sie sie umbenennen (ohne die Bilder umzubenennen) oder die einzelnen Komponenten ändern. Auf diese Weise können Sie einfacheren Benennungskonventionen folgen und ganz unterschiedliche Assets zwischen verschiedenen UIScreenscales ohne scale -Überprüfungen anzeigen.

Um Bilder für verschiedene Gerätegrößen einzubinden, müssen Sie sie möglicherweise in den Optionen der Asset Catalog-Gruppe unter der Unterüberschrift "Geräte" umschalten. Hier ist ein Beispiel für diesen Umschalter (verfügbar, indem Sie mit der rechten Maustaste auf die Gruppe klicken).

127
RileyE

Auch Apple hat eine neue Methode hinzugefügt, um Bilder aus Assets mit Swift 3) zu erhalten. Es heißt 'Bild-Literal' und funktioniert wie nachstehend:

Image Literal

15
Yigit Yilmaz

Swift

Mit können Sie einen Verweis auf ein Bild in Ihrem Anlagenkatalog erhalten

UIImage(named: "myImageName")

Sie müssen die Erweiterung nicht einfügen.

3
Suragch

@ RileyE ist 100% richtig. Aus meiner Erfahrung ist es jedoch auch erwähnenswert, dass die Asset-Katalogreferenz für das Bild manchmal nachgestellte Leerzeichen enthalten kann. Sie werden es wahrscheinlich nicht bemerken, wenn Sie Storyboards/xibs als automatische Vervollständigung verwenden. Wenn Sie sich jedoch auf Code beziehen, ist das Problem nicht so offensichtlich.

1
AppHandwerker