Je travaille avec Xcode 6, et j'essaie de recréer le code démo lors de la session 401 "Quoi de neuf dans Xcode 6". J'ai ajouté une image à Images.xcassets (appelée Sample) et dans le file de terrain de jeu j'essaie d'accéder à cette image, comme démo.
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 bundle que vous pouvez utiliser avec le standard NSImage (nommé: "filename_without_extension"):
Remarque: étant donné que Xcode replacea fréquemment le dossier .playground, je recommand d'utiliser cette méthode pour que le dossier de ressources ne soit pas constamment supprimé et recréé.
Regardez l'iOS Developer Library-> Playground Aide et searchz "Resource Files" et vous findez la réponse
1, ouvrez le .playground
2, Affichez le browser de projet en sélectionnant Affichage> Navigateurs> Afficher le browser de projet.
3, faites glisser les images vers les ressources
Comme suit:
J'ai eu quelques problèmes avec ça aussi.
Malheureusement, la réponse de Chris n'a pas fonctionné pour moi. Je soupçonne peut-être qu'une version bêta ultérieure de Xcode 6 aurait pu supprimer 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 le dossier Resources se trouve dans le package du playground lui-même.
Voici comment configurer ceci.
En utilisant le Finder – ou si vous êtes comme moi et utilisez le génial Path Finder – à droite, select et choisissez Afficher le contenu du package comme suit:
Cela révèle le dossier Resources packages:
Copier les files image dans ce dossier fera l'affaire:
let imageNames = ["back-button", "background", "bg_top"] let images = imageNames.map { UIImage(named: $0) }
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 où vous devez mettre l'image pour y faire reference en utilisant seulement le nom, mais j'ai obtenu le même code pour travailler en spécifiant le path complet de l'image, comme:
var sample = UIImage(named: "/Users/my_user_name/Desktop/Image1234.jpg")
Devoir utiliser le path complet semble plus compliqué qu'il ne devrait l'être, mais cela fonctionne et cela me permet de passer à des problèmes plus intéressants.
Vous pouvez find le path de resourcePath en utilisant ces commands dans playground:
var bundle = NSBundle.mainBundle() var path = bundle.resourcePath
Par défaut pour moi était:
/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents
J'ai eu des difficultés à get cette configuration pour un terrain de jeu iOS, par opposition à un terrain de jeu OS X. Essayer de le faire en utilisant des faisceaux et des paths relatifs le rend plus compliqué.
Si vous voulez simplement mettre la main sur une image rapidement, vous pouvez aussi utiliser le path absolu du file:
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)
À partir de Xcode 8 Beta 1, vous pouvez utiliser les littéraux d'image pour importer une image dans un terrain de jeu Xcode:
Commencez à taper l' image
pour append un littéral d'image:
Sélectionnez (ou searchz votre image):
Voir votre image en ligne:
C'est ce qui a fonctionné pour moi sur Xcode Version 6.1.1.
Créez un file Playground sous le même directory que le storyboard principal.
Ouvrez le volet Utilitaires pour le file Playground, puis click la flèche droite dans la section Resource Path
pour append vos images dans ce directory.
Testez l'image dans le file Playground.
En utilisant XCode 6.3.1 et en courant le terrain de jeu en simulateur complet (iOS), j'ai dû faire ce qui suit:
Ensuite instanciez simplement avec let i = UIImage(named: "filename.png")
Sur le terrain de jeu iOS avec XCode 6 beta 5 (et probablement plus tard), vous pouvez voir l'image dans le bundle:
Accédez-y avec soit
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!)