Obtenez plus claires et plus sombres les variations de couleur pour une UIColor
Comment obtenir différentes plus claires et plus sombres variations d'une donnée UIColor dans Swift?
- titre de la question est assez trivial et permettent des solutions différentes; vous pouvez également utiliser une fonction au lieu de deux à l'aide de négatif paramètre d'entrée
- Diverses techniques ont été proposées ici stackoverflow.com/questions/11598043/..., il y a aussi des réponses à Swift.
- mise à jour, merci pour l'entrée
- Swift - 4.0 Cliquez lièvre pour la réponse
- cette réponse était déjà disponible au moment où vous avez posté votre question. En général, je pense que cette question et l'autre sont très similaires, si ce n'est dupliqué.
- Double Possible de Obtenir un peu plus Léger et le plus Sombre de la Couleur de UIColor
Vous devez vous connecter pour publier un commentaire.
Mis à jour
Utilisation ci-dessous UIColor Extension:
Utilisation:
au lieu de
.lighter()
et.darker()
, vous pouvez utiliser.adjust()
avec des valeurs positives pour les éclairs et les valeurs négatives pour assombrirDe sortie:
=30.0
moyenne dans la déclaration de la fonctionfunc ...(by percentage:CGFloat=30.0)
Je tiens à donner une autre version à l'aide de la luminosité de l' & saturation au lieu de RVB
Version avec les valeurs RVB de la modification
Ici, je mets simples
UIColor
l'extension qui est basé sur les réponses précédentes. Il fonctionne parfaitement pour moi.Ci-dessous la démo:
Couleurs de manipulation de code
Serré fonction
Extension de garder facilement entre les valeurs min et max.
Kenji-Tran réponse fonctionne très bien, aussi longtemps que votre couleur de départ n'est pas noir (valeur de luminosité 0). Avec l'ajout de quelques lignes de code supplémentaire, vous pouvez également faire noir "léger" (c'est à dire l'égayer en niveaux de gris ou couleur).
Remarque: je n'ai pas pu ajouter ce changement à l'aide d'un montage et je ne suis pas autorisé à commenter Kenji-Tran réponse à cause de mon "petit nouveau" rep, donc je n'ai pas trouvé d'autre moyen de partager mes connaissances sur alors par la publication d'une nouvelle réponse. J'espère que c'est correct.
b == 0.0 && s == 0.0
? Je pensais juste voulez plus de casb == 0
est suffisant pour résoudre le problème. Parce que sib is 0 and s > 0
, votre code n'est toujours pas en mesure de rendre la couleur plus doux?s == 0
était parce que je voulais travailler pour le noir à niveaux de gris. Mais, évidemment, sans les == 0
cela fonctionne pour n'importe quelle couleur avec la luminosité à zéro. Je vous remercie.Pour Swift 5.0 :
Testé dans Xcode 10 avec Swift 4.x pour iOS 12
Commencer avec votre couleur comme UIColor et choisir un assombrissement facteur (comme un CGFloat)
Le type CGColor a une valeur facultative
components
qui décompose la couleur dans RGBA (comme un CGFloat tableau avec des valeurs entre 0 et 1). Vous pouvez alors reconstituer un UIColor à l'aide RGBA valeurs de la CGColor et les manipuler.Dans cet exemple, chaque RVB de la valeur ont été divisé par 2, ce qui rend la couleur de la moitié sombre comme il était avant. La valeur alpha est resté le même, mais vous pouvez également appliquer le assombrir facteur sur l'alpha de la valeur plutôt que le RVB.
À l'aide de lukszar clampled fonction, j'ai écrit cette fonction pour le UIColor extension, à l'aide de véritables proportions de valeurs RVB. J'espère qu'il est utile
Swift 4 version qui prend en charge RGBA, HSBA, et de la banque mondiale (niveaux de gris)
Voici une variante de TranQuan de réponse qui supporte également les niveaux de gris des couleurs comme le
.white
et.black
. (Note: j'ai supprimé l'ajustement de la saturation puisque je n'ai pas, il appartenait à une fonction simple comme ça.)