web-dev-qa-db-fra.com

Swift terrains de jeux avec UIImage

Je travaille avec Xcode 6 et j'essaie de recréer le code présenté lors de la session 401 "Quoi de neuf dans Xcode 6". J'ai ajouté une image à Images.xcassets (appelée Sample) et dans le fichier de jeu, j'essaie d'accéder à cette image, comme en démonstration.

Mon code est le suivant (comme la démo):

var sample = UIImage(named: "Sample")

Cependant, je ne peux pas le faire fonctionner comme la démo. Est-ce que je manque quelque chose?

53
Ross Gibson
  1. Ouvrez le fichier .playground dans le Finder.
  2. Créez un dossier appelé Ressources à côté de celui-ci.
  3. Ajoutez les images de votre choix dans ce dossier.
  4. Dans la cour de récréation, appuyez sur opt-cmd-1 pour ouvrir l'inspecteur de fichiers. Vous devriez voir le terrain de jeu sur la droite. Si vous ne l'avez pas sélectionné, appuyez sur cmd-1 pour ouvrir le navigateur de projet et cliquez sur le fichier de terrain de jeu.

File Inspector

  1. Sous "Chemin de la ressource", choisissez "Relatif au terrain de jeu".
  2. Cliquez sur l'icône du dossier ci-dessous et choisissez le dossier Ressources créé précédemment.

Vous devriez maintenant avoir un paquet que vous pouvez utiliser avec le NSImage standard (nommé: "filename_without_extension"):

Working nsbundle image

Remarque: Xcode écrasant fréquemment le dossier .playground, nous vous recommandons d'utiliser cette méthode afin d'éviter toute suppression ou recréation permanente du dossier des ressources.

64
Chris Hill

Consultez la bibliothèque de développement iOS -> Aide de Playground et recherchez "Fichiers de ressources" pour trouver la réponse.

1 、 Ouvrez le .playground

2 、 Affichez le navigateur de projet en sélectionnant Affichage> Navigateurs> Afficher le navigateur de projet.

3 、 Faites glisser les images vers les ressources

J'aime suivre:

enter image description here

99
Bruce

J'ai eu quelques problèmes avec cela aussi.

Malheureusement, la réponse de Chris n'a pas fonctionné pour moi. Je suppose que peut-être une version bêta ultérieure de Xcode 6 a peut-être supprimé ce paramètre.

Voici une solution à partir de Xcode 6.0 beta 4 (6A267N) disponible le 21 juillet 2014. Je suppose que cela correspond à l'option "Inside playground" précédemment. C’est là que se trouve le dossier Ressources du paquet de jeux lui-même.

Voici comment configurer cela.

Utiliser le Finder - ou si vous êtes comme moi et utilisez l’impressionnant Path Finder - faites votre choix et choisissez Afficher le contenu du paquet suit:

enter image description here

Cela révèle le dossier des packages Resources :

enter image description here

Copier les fichiers image dans ce dossier fera l'affaire:

let imageNames = ["back-button", "background", "bg_top"]
let images = imageNames.map { UIImage(named: $0) }

enter image description here

32
Max MacLeod

Pour Xcode 9:

  • Sélectionnez le dossier de ressources
  • Faites un clic droit puis " Ajouter des fichiers à" Ressources ""
  • Utilisez-le comme: let image = UIImage(named: "no")

enter image description here

10
William Hu

À partir de Xcode 8 Beta 1, vous pouvez utiliser les littéraux d'images pour importer une image dans un terrain de jeu Xcode:

Commencez à taper image pour ajouter un littéral d’image:

Swift Image Literal

Sélectionnez (ou recherchez) votre image:

Image

Voir votre image en ligne:

Inline

4
JAL

Vous pouvez trouver le chemin de resourcePath en utilisant ces commandes dans la plaine de jeux:

var bundle = NSBundle.mainBundle()
var path = bundle.resourcePath

La valeur par défaut pour moi était:

/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents
3
user3715448

Cependant, je ne peux pas le faire fonctionner comme la démo. Est-ce que je manque quelque chose?

Je ne suis pas sûr de savoir où vous devez mettre l'image pour y faire référence en utilisant uniquement le nom, mais le même code a été utilisé pour spécifier le chemin d'accès complet à l'image, par exemple:

var sample = UIImage(named: "/Users/my_user_name/Desktop/Image1234.jpg")

Devoir utiliser le chemin d'accès complet semble plus compliqué qu'il ne le devrait, mais cela fonctionne et me permet de passer à des problèmes plus intéressants.

3
Caleb

J'ai eu du mal à obtenir cette configuration pour un terrain de jeu iOS, par opposition à un terrain de jeu OS X. Essayer de le faire en utilisant des bundles et des chemins relatifs le rend plus compliqué.

Si vous souhaitez simplement mettre rapidement la main sur une image, vous pouvez également utiliser le chemin de fichier absolu:

Sur iOS:

# iOS
let absoluteImagePath = "/absolute/path/to/image.png"
let image = UIImage(contentsOfFile: absoluteImagePath)

Et sur OS X

# OS X
let absoluteImagePath = "/absolute/path/to/image.png"
let image = NSImage(contentsOfFile: absoluteImagePath)
3
algal

C'est ce qui a fonctionné pour moi sur Xcode Version 6.1.1.

  1. Créez un fichier Playground dans le même répertoire que le storyboard principal.

    Folder Structure

  2. Ouvrez le volet Utilitaires pour le fichier Playground, puis cliquez sur la flèche droite dans Resource Path section pour ajouter vos images dans ce répertoire.

    Resource Path for Playground

  3. Image test dans le fichier Playground.

    Result

2
toadead

Sur le terrain de jeu iOS avec XCode 6 beta 5 (et probablement plus tard), vous pouvez voir l'image à l'intérieur du lot:

  1. Dans la cour de récréation, appuyez sur Cmd + Opt + 1 et cliquez sur la flèche située sous le chemin d'accès aux ressources (le Finder s'ouvrira).
  2. Mettez votre photo dans ce dossier
  3. Accédez-y avec

    let img = UIImage(named: "logo.png", inBundle: NSBundle.mainBundle(),
                      compatibleWithTraitCollection: nil)
    

    ou

    let path = NSBundle.mainBundle().pathForResource("logo", ofType: "png")
    let img = UIImage(contentsOfFile:path)
    

    ou dans Swift 4:

    let path = Bundle.main.path(forResource:"logo", ofType: "png")
    let img = NSImage(contentsOfFile:path!)
    
2
voiger

En utilisant XCode 6.3.1 et en exécutant l'aire de jeux dans un simulateur complet (iOS), je devais effectuer les tâches suivantes:

  1. Recherchez votre fichier .playground dans le Finder
  2. Faites un clic droit dessus -> afficher le contenu du paquet
  3. S'il n'existe pas déjà, créez un dossier nommé Resources dans le package.
  4. Ajoutez votre image ici

Ensuite, instanciez simplement avec let i = UIImage(named: "filename.png")

1
chadkouse