Charger une image à partir d'iOS 8 cadre
Je suis en train de charger une image à partir d'une version d'iOS 8 cadre que je suis en train d'écrire (en Swift). Je suis en utilisant Xcode 6 Beta 6
Ce code ne fonctionne pas (c'est à dire charger l'image si l'image est stockée dans mon cadre de Images.xcassets
:
let image = UIImage(named: "Background.png")
Si l'image est stockée dans un Images.xcassets
d'une application hôte (qui utilise le framework), puis l'image est correctement chargé (à partir du code à l'intérieur du cadre).
Je peux voir que le cadre de Images.xcassets
est inclus dans le Copy Bundle Resources
phase.
Je suis aussi à l'aide d'un storyboard fichier en tant que ressource dans le cadre, et cette charge correctement.
J'ai essayé de renommer les Images.xcassets du cadre pour éviter une sorte de nommage collision avec l'application hôte, mais cela ne fonctionne pas non plus.
Vous devez vous connecter pour publier un commentaire.
Tandis que @Renatus réponse est parfaitement valide et traite de la question centrale (bundle pour cadre doit être spécifié), je voulais poster la solution, je suis allé avec car il est un peu plus direct:
Swift 3.0/4.0/5.0
Alternativement, vous pouvez utiliser ce modèle pour les non-
class
, aka non"statique", fonctions:ou ce modèle pour
class
fonctions:Ces solutions de rechange sont mieux pour le découpage et le collage.
UIImage(nommé: "d'arrière-plan.png") appelle NSBundle.mainBundle() dans le fonctionnement interne. Ainsi, votre code est en essayant de trouver des ressources dans votre application hôte du bundle, pas dans les cadres de bundle. Pour charger UIImage de votre cadre le faisceau de l'utilisation de cet extrait:
Modifié: ajout de l'explication (merci à milz)
yourImage.png
- vous voulez UIKit à choisir entre @2, @3 etc.Dans Swift 3.0:
Une autre option consiste à attribuer l'identifiant de lot, ce qui fait plus de sens que d'assigner la classe quand il s'agit de la lisibilité.
Dans Swift 3:
Accepté la réponse n'a pas fonctionné pour moi. Voici un infaillible moyen de chargement d'une image incorporée dans un cadre dynamique: