33 votes

Complément d'image Xcode 8

Dans Xcode 8, les images sont autocomplétées pendant la saisie.

La question est : Pourquoi ?

J'ai essayé d'initier UIImage avec le résultat suggéré, mais cela ne fonctionne pas.

Inside UIImage Outside UIImage

Quelqu'un sait-il comment l'utiliser ?

0 votes

Je pense que cela ne fonctionne que dans les cours de récréation, il semble. Du moins, c'est ce qu'il semble.

2 votes

Vous devez donner plus d'informations, peut-être partager le code environnant et la version de Xcode. Les images littérales fonctionnent bien pour moi, et pas seulement dans les cours de récréation.

0 votes

C'est la fonctionnalité la plus aggravante que j'ai rencontrée avec Xcode. C'est comme, "Voici un gain de temps... PSYCH !"

47voto

Rashwan L Points 4675

Xcode 8 reconnaîtra automatiquement toutes les images que vous avez dans un catalogue d'actifs et les proposera comme suggestion à l'intérieur d'un initialisateur UIImage.

Donc, en gros, ce que vous devez faire est simplement ce qui suit (comme vous l'avez fait dans votre question, mais il doit y avoir quelque chose d'autre qui le perturbe) :

let i = voiture // image name

Et ensuite, il suffit d'utiliser i lorsque vous voulez définir une image.

Sous le capot, il crée un code qui ressemble à ceci : #imageLiteral(resourceName: "voiture.png") . Mais en ligne dans l'éditeur de sources, vous ne verrez que le nom du fichier de l'image. Le site #imageLiteral La syntaxe n'est reconnue que sur Swift 3 ou plus tard.

Ici est une démonstration vidéo lien où je fais ça et aquí est un lien vers un exemple de projet que j'ai créé.

Note que vous devez cliquer sur la suggestion d'instellisense pour que vous voyiez une vignette de l'image dans le code et ensuite le nom de l'image.

Mise à jour 1

Cette fonctionnalité reste dans Xcode Version 9.0 beta 6 (9M214v) enter image description here

Mise à jour 2

Xcode 11.2.1 ce qui n'apparaît plus.

0 votes

Si vous regardez la deuxième capture d'écran, j'ai un problème de compilation et je ne suis pas en mesure de construire...

2 votes

Comme je l'ai écrit dans la réponse, il doit y avoir quelque chose d'autre qui le perturbe. Avez-vous regardé la vidéo que j'ai téléchargé, c'est la même façon que je l'ai fait. Ici Voici un lien vers le projet que j'ai créé, essayez de le télécharger et de l'exécuter et voyez s'il fonctionne pour vous.

2 votes

La seule différence entre votre exemple et mon application, c'est que vous êtes en Swift 3. Donc je suppose que c'est ça

10voto

Chris Hanson Points 34485

Une image littérale est déjà une UIImage, vous n'avez pas besoin de la passer à une UIImage pour en initialiser une.

0 votes

Heheh - apparemment, Xcode est assez intelligent pour déduire que le type est un UIImage si le contexte l'indique, sinon il y aurait une erreur de compilation pour le code ci-dessus.

10voto

Dave Lyon Points 76

Je n'ai pas pu trouver de source "officielle" à ce sujet, mais d'après mes tests personnels, il semble que si la complétion automatique fonctionne dans les projets Swift 2.3 et Swift 3.0, les littéraux d'image ne fonctionnent correctement que dans un projet Swift 3.

Essayez-le dans un terrain de jeu Swift 3 et vous verrez qu'il fonctionne parfaitement.

enter image description here

3 votes

Oui, je confirme que j'ai des erreurs dans un projet Swift 2.3.

4voto

Hong Wei Points 21

J'ai utilisé cette fonctionnalité. En gros, si j'ai une image qui commence par "ic", je tape let i = suivi par ic . À ce stade, Xcode 8 affiche une liste déroulante d'images et je choisis ensuite l'image correcte dans la liste. Je n'ai jamais pris la peine de taper UIImage( . Il fonctionne comme le code d'autocomplétion, sauf qu'il utilise le nom de fichier de l'image.

Dans votre cas, il y a probablement un autre problème qui cause l'échec de la compilation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X