web-dev-qa-db-fra.com

UIImage ne s'affiche pas en utilisant Swift

Le code écrit en Swift pour afficher les UIImages fonctionne dans le simulateur iOS 8.0 mais pas sur un téléphone exécutant IOS 7.0 pour une raison quelconque).

let image1 = UIImage(named: "img1")
let imageview = UIImageView(image: image1)
self.view.addSubview(imageview)

let image2 = UIImage(named: "img2")
let button = UIButton(frame: CGRect(Origin: CGPoint(x: 0, y: 100), size: image2.size)
button.setImage(image2, forState: UIControlState.Normal)
self.view.addSubview(button)

Les images sont au bon endroit avec la bonne taille et les références valides, elles ne sont tout simplement pas affichées, sauf sur le simulateur exécutant iOS 8.

Est-ce un problème pour quelqu'un d'autre?

EDIT: Supprimer de Images.xcassets, nettoyer le projet et copier les fichiers dans le bundle lui-même semble fonctionner pour moi.

23
Joseph Mark

J'ai essayé votre code dans iOS 8-Simulator et sur mon appareil iOS 7 et il a fait ce qu'il devait faire. Donc non, dans mon cas, je ne vois aucun problème.

J'ai changé img1 en img1.JPG (nom du fichier) et img2 en img2.png. Et j'ai copié les images directement dans le dossier où se trouve le contrôleur de vue ..

1
Ben

Pour afficher des images, vous devez modifier le code de la manière suivante

let image1 = UIImage(named: "img1.jpg")
let imageview = UIImageView(image: image1)
self.view.addSubview(imageview)

let image2 = UIImage(named: "img2.jpg")
let button = UIButton(frame: CGRect(Origin: CGPoint(x: 0, y: 100), size: image2.size)
button.setImage(image2, forState: UIControlState.Normal)
self.view.addSubview(button)

Rappelez-vous Swift ne prend pas en charge les images au format .png, il prend en charge le format .jpg.

9
CNU

Vous vérifieriez si l'image a été ajoutée à votre framework, si cette case n'est pas cochée, vous ne pouvez pas charger la ressource, mais si vous la vérifiez, l'image sera chargée enter image description here

2
MrMins

Il semble y avoir un décalage entre les votes pour la question et les autres réponses, donc j'ajouterai une réponse générique pour savoir comment afficher une image dans Swift. C'est ce qui m'a amené ici de toute façon.

Comment afficher une image dans Swift

Utilisez UIImage pour obtenir une référence à l'image dans le bundle principal.

let image = UIImage(named: "rocket.png")
imageView.image = image

Notes

  • imageView est un UIImageView
  • Dans mes tests, l'inclusion ou l'exclusion de l'extension de fichier .png n'a pas fait de différence. Il peut cependant être nécessaire d'inclure si vous utilisez plusieurs formats d'image.
  • Toujours dans mes tests, cela n'a pas fait de différence si l'image a été directement ajoutée au projet ou était dans Assets.xcassets.
  • Si vous avez besoin d'une image qui n'est pas dans le bundle principal, voir cette question .
  • Selon l'édition de la question d'origine ici, la suppression de l'image et sa réajout au bundle ont résolu le problème.
2
Suragch

J'ai stocké mes images dans le dossier "Images.xcassets" et mes images n'apparaissaient pas sur mon appareil mais elles apparaissaient sur le simulateur. Afin d'afficher les images "Images.xcassets" sur mon appareil (iPhone 5), moi, la solution qui a fonctionné pour moi a été de copier les ressources du bundle pour le dossier "Images.xcassets"

Pour copier des ressources d'ensemble: sélectionnez Cible> Phases de construction> Copier des ressources d'ensemble> Sélectionnez "+" (Ajouter des éléments)> Sélectionnez "Images.xcassets

1
terminallyIll