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?
Vous devriez maintenant avoir un paquet que vous pouvez utiliser avec le NSImage standard (nommé: "filename_without_extension"):
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.
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:
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:
Cela révèle le dossier des packages Resources :
Copier les fichiers image dans ce dossier fera l'affaire:
let imageNames = ["back-button", "background", "bg_top"]
let images = imageNames.map { UIImage(named: $0) }
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
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.
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)
C'est ce qui a fonctionné pour moi sur Xcode Version 6.1.1.
Créez un fichier Playground dans le même répertoire que le storyboard principal.
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.
Image test dans le fichier Playground.
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:
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!)
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:
Ensuite, instanciez simplement avec let i = UIImage(named: "filename.png")