web-dev-qa-db-fra.com

Xcode 10 - les littéraux d'images ne sont plus disponibles

Notes de publication de Xcode 10: "La complétion de code pour Swift les littéraux d'images a été supprimée dans Xcode 10"

Ce n’est donc pas un bug que je ne pouvais pas ajouter d’images dans le code (et exécuter des projets plus anciens). Comment pouvons-nous alors ajouter des images à partir de maintenant dans le code, en tapant simplement UIImageView(image: n'acceptera aucun fichier png ou jpeg.

let cellImage: UIImageView = {
    let image = UIImageView(image: ???))

    return image
}()

Système: macOS Mojave
Xcode: Xcode 10 Bêta 4

73
Pawel Cichonski

Trouvé le raccourci pour ouvrir l'onglet Médiathèque:

++M

À ce stade, la documentation officielle ne couvre pas certains cas d'utilisation de Xcode 10 bêta. Par conséquent, je ne suis pas en mesure de trouver un moyen de déplacer la partie multimédia à l'ancienne position.

85
Ron Gahlot

Dans Xcode 10 et Swift 4.2 , seule la fonction de complétion de code (ou l'auto-complétion) du Xcode IDE a été abandonné à l'ancienne. Voici le nouveau moyen:

Il suffit de taper image literal et il se terminera avec l'icône par défaut.

enter image description here

Double-cliquez sur cette icône pour ouvrir la médiathèque à droite.

enter image description here

Il suffit de choisir votre imagem et ça marche comme avant!

enter image description here

85

Vous pouvez utiliser la médiathèque dans Xcode pour ajouter un littéral d’image à votre code:

Show XCode media library

Puis choisissez une image dans la bibliothèque et faites-la glisser dans votre code

Choose image from library

Cela créera une image littérale

44
andrey.krukovskiy

Pour le bénéfice des autres utilisateurs de code hérité qui utilise Swift Image Literals, le code et la syntaxe de la fonction littérale d'image eux-mêmes sont toujours valides et fonctionnent parfaitement sous Xcode 10 avec Swift 4.2.

Il n'est pas nécessaire de restaurer ou de refactoriser le code existant qui utilise ces littéraux d'images, et ils peuvent toujours être utilisés comme suit:

imageView.image = #imageLiteral(resourceName: imageNameString)

Seule la fonction de complétion de code (ou l'auto-complétion) du Xcode IDE a été interrompue.


UPDATE

Différence entre la représentation littérale d'une image dans les versions précédentes et actuelles ou Xcode/Swift:

image = #imageLiteral(resourceName: "flower.jpg")

image = #imageLiteral(resourceName: "flower.jpg")

Comme l'illustre l'extrait, les littéraux d'images ont été représentés en ligne avec les vignettes de leur image réelle. Cependant, maintenant, seule une icône générique est utilisée à la place. Cela va probablement dans le sens d'une réduction de la charge imposée à l'EDI, en éliminant les frais généraux liés à la manipulation et à l'affichage des miniatures en ligne.

19
iSofia

CONSEIL: pour corriger trois résolutions après avoir ajouté une image littérale dans le code.
1. Supprimer un autre, ne garder qu'une image
2. Commentez votre code de ligne avec une image littérale, puis apparaîtra une image littérale dans le code, telle que: #imageLiteral(resourceName: "[email protected]"
3. dans la valeur resourceName, supprimez @2x et l'extension de fichier, comme .png, conservez uniquement le nom de l'image: #imageLiteral(resourceName: "image")
4. Uncomment! L'image sera affichée dans le code.

11
Wesley Gomes
  • utiliser UIImage (imageLiteralResourceName: 'imageName') ne renverra pas un optionnel et fonctionnera parfaitement
1
Francis Ken

j'utilise Xcode 10 beta 4 et j'ai le même problème! Résolu en utilisant l'ancienne méthode pour transmettre une image

PizzaModel(
            nome: "Marinara",
            ingredienti: "Pomodoro, Aglio",
            calorie: "729",
            img: UIImage(named: "marinara")!
)
0
Gianlo