web-dev-qa-db-fra.com

Accéder au catalogue d'actifs par programmation

Je sais que c'est une nouvelle fonctionnalité et que cela pourrait ne pas être possible, mais j'aimerais pouvoir utiliser un catalogue d'actifs pour organiser mes actifs, mais j'accède à toutes mes images par programmation. Comment pourrais-je accéder à mes images, maintenant? Est-ce que j'y accède toujours par leurs noms de fichiers, comme ceci:

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

Apparemment, le catalogue d’actifs ne fait pas référence à l’extension; serait-il donc plus efficace d’y accéder sans le ".png"?

La raison pour laquelle je demande au lieu de tester pour moi-même, c'est que même après avoir supprimé mes actifs et mon catalogue d'actifs, puis nettoyé le dossier de construction, je peux toujours accéder à mes actifs dans mon application. Cela m'empêche de tester le catalogue d'actifs lorsque je le implémente.

Après avoir parcouru le catalogue d’actifs, j’ai trouvé le "Contenu.json" pour chaque actif et il est formaté comme suit:

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

Je ne sais toujours pas comment y accéder, mais peut-être que cela aidera?

91
RileyE

Pour accéder à l'image à partir du catalogue d'actifs, il vous suffit d'accéder au nom du groupe d'actifs sans aucune extension.

Donc, si vous ajoutez une image nommée @"[email protected]" dans le catalogue d’actifs, il créera un groupe d’actifs appelé my-button.

Il ne vous reste plus qu'à accéder à l'image de la manière suivante:

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

En outre, vous pouvez modifier le groupe d'actifs en le renommant (sans renommer les images) ou en modifiant ses composants individuels. Cela vous permettra de suivre des conventions de dénomination plus simples et d'afficher des actifs complètement différents entre différents UIScreenscales sans aucun contrôle scale.

Afin d'incorporer des images pour différentes tailles de périphérique, vous devrez peut-être basculer sous la sous-rubrique "Périphériques" dans les options du groupe du catalogue d'actifs. Voici un exemple de cette bascule (disponible en cliquant avec le bouton droit de la souris sur le groupe).

127
RileyE

Aussi Apple a ajouté un nouveau moyen d’obtenir une image à partir d’actifs avec Swift 3, Il appelle en tant que 'Image Literal' et travaille comme ci-dessous:

Image Literal

15
Yigit Yilmaz

rapide

Vous pouvez obtenir une référence à une image de votre catalogue d’actifs avec

UIImage(named: "myImageName")

Vous n'avez pas besoin d'inclure l'extension.

3
Suragch

@RileyE a 100% raison. Toutefois, d’après mes expériences, il convient également de noter que la référence du catalogue d’actifs pour l’image peut parfois contenir des espaces. Vous ne remarquerez probablement pas que si vous utilisez des storyboards/xibs car l'auto-complétion l'ajoutera. Mais quand vous faites référence au code, le problème n’est pas évident.

1
AppHandwerker