web-dev-qa-db-fra.com

Graphiques, UIColor créé avec des valeurs de composants bien en dehors de la plage attendue

J'ai eu Xcode 8 et un dossier avec des images. J'ai remplacé toutes les images par des filtres spécifiques dans Photoshop, Pixalate.

Lorsque j'exécute mon projet, j'obtiens une erreur:

[Graphics] UIColor créé avec des valeurs de composant très en dehors de la plage attendue, définissez un point d'arrêt sur UIColorBreakForOutOfRangeColorComponents à déboguer. Ce message ne sera enregistré qu'une seule fois.

Comment puis-je résoudre ça?

29
Done

Vous pourriez avoir quelque chose comme ça quelque part:

UIColor(red: 255, green: 255, blue: 255, alpha: 1.0)

doivent être modifiés comme ceci maintenant:

UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
SO : UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 1.0)
49
Patrice From 8Beats

Comme mentionné dans vos informations d'avertissement, vous définissez simplement la valeur en dehors de la plage attendue. Selon l'API Reference, chaque passage de paramètre au générateur UIColor doit être compris entre 0,0 et 1,0.

Vous pouvez suivre les étapes ci-dessous pour connaître le code à l'origine de cet avertissement:

Étape 1: ajoutez un point d'arrêt symbolique dans votre navigateur de points d'arrêt add a Symbolic Breakpoint

Étape 2: définissez le symbole du point d'arrêt symbolique sur UIColorBreakForOutOfRangeColorComponentsset the symbol of the Symbolic Breakpoint

Étape 3: exécutez votre application pour obtenir la pile d'appels

Suivez la pile d'appels de l'étape 3, vous trouverez les résultats du code clé dans l'avertissement.

46
roby

Réponse courte: les valeurs RVB vont de 0 à 1. Vous avez probablement entré le numéro droit. Divisez chaque valeur par 255.

Réponse longue: j'ai eu cette erreur. J'avais recherché une couleur en RVB. C'était mon code.

view.backgroundColor = UIColor(red: 125, green: 125, blue: 125, alpha: 1)

J'ai utilisé l'astuce de point d'arrêt symbolique pour trouver la ligne sur laquelle il se cassait, mais je ne savais toujours pas comment le réparer.

En regardant une autre réponse ici, je me suis souvenu que les valeurs RVB ont une plage de 0 à 1. Les nombres donnés sont toujours divisé par 255 .

J'ai changé mon code en ceci:

view.backgroundColor = UIColor(red: 125/255, green: 125/255, blue: 125/255, alpha: 1) et cela a très bien fonctionné.

7
Joshua Dance

Essayez ceci. Ça a bien marché pour moi

UIColor(red: <Your color>/255.0, green: <Your color>/255.0, blue: <Your color>/255.0, alpha: 1.0)
6
Syngmaster