2015-03-09 1 views
1

je tente de charger des images de mon LaunchImage image définie dans un fichier .xcassets, mais je ne veux pas n'utilisez imageNamed:, comme il gaspille la mémoire et l'image doit seulement être affiché pendant quelques secondes lors du lancement initial.Obtenir l'image de lancement de XCAssets en utilisant imageWithContentsOfFile:

J'ai essayé plusieurs approches à cela, mais jusqu'ici je n'ai pu les charger qu'en utilisant imageNamed:.

Cela fonctionne:

[UIImage imageNamed:@"LaunchImage-700-568h.png"] 

Cela ne fonctionne pas (retours null):

[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"LaunchImage-700-568h" ofType:@"png"]] 

Est-il possible de le faire sans y ajouter les ressources explicitement à la cible (en dehors de la fichier d'actifs)? Merci!

Répondre

2

Il semblerait que la réponse à votre question soit non.

Selon XCAssets documentation.

Chaque ensemble dans un catalogue d'actifs a un nom. Vous pouvez utiliser ce nom pour charger par programme toute image individuelle contenue dans l'ensemble. Pour charger une image, appelez la méthode de classe spécifique à la plate-forme en transmettant le nom de l'ensemble contenant l'image. Le système d'exploitation chargera l'image de l'ensemble le plus approprié pour le facteur d'échelle actuel. La méthode de plate-forme pour iOS est imageNamed :. Pour OS X la méthode de la plate-forme est imageNamed:

donc nous devons utiliser [UIImage imageNamed:] méthode pour charger des images de catalogue XCAssets sur iOS.

Voir les questions et réponses similaires here.

+0

Merci pour la réponse. Est-il possible de le faire sans avoir à ajouter le fichier en tant que ressource en dehors du fichier de ressources Xcode? Je souhaite que la taille de l'application soit réduite si possible, et cela correspond à différents fichiers de lancement pour différents écrans. – rebello95

+0

Désolé, j'ai mal compris votre question. Voir la mise à jour – salabaha

+0

Dommage qu'ils n'ont pas une meilleure façon de le faire ... Merci pour la réponse. – rebello95