La réponse de Kenji-Tran fonctionne bien, tant que votre couleur de départ n'est pas le noir (valeur de luminosité 0). Avec l'ajout de quelques lignes de code supplémentaires, vous pouvez également rendre le noir plus "léger" (c'est-à-dire l'éclaircir à une valeur de niveau de gris ou de couleur).
Note : Je n'ai pas été en mesure d'ajouter cette modification en utilisant une édition et je ne suis pas autorisé à commenter la réponse de Kenji-Tran en raison de ma réputation de "nouveau garçon", donc je n'ai pas trouvé d'autre moyen de partager mes connaissances sur le SO que de poster une nouvelle réponse. J'espère que cela vous convient.
extension UIColor {
/**
Create a ligher color
*/
func lighter(by percentage: CGFloat = 30.0) -> UIColor {
return self.adjustBrightness(by: abs(percentage))
}
/**
Create a darker color
*/
func darker(by percentage: CGFloat = 30.0) -> UIColor {
return self.adjustBrightness(by: -abs(percentage))
}
/**
Try to increase brightness or decrease saturation
*/
func adjustBrightness(by percentage: CGFloat = 30.0) -> UIColor {
var h: CGFloat = 0, s: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 0
if self.getHue(&h, saturation: &s, brightness: &b, alpha: &a) {
if b < 1.0 {
/**
Below is the new part, which makes the code work with black as well as colors
*/
let newB: CGFloat
if b == 0.0 {
newB = max(min(b + percentage/100, 1.0), 0.0)
} else {
newB = max(min(b + (percentage/100.0)*b, 1.0), 0,0)
}
return UIColor(hue: h, saturation: s, brightness: newB, alpha: a)
} else {
let newS: CGFloat = min(max(s - (percentage/100.0)*s, 0.0), 1.0)
return UIColor(hue: h, saturation: newS, brightness: b, alpha: a)
}
}
return self
}
}
1 votes
La question du titre est assez triviale et permet différentes solutions ; vous pouvez également utiliser une fonction au lieu de deux en utilisant un paramètre d'entrée négatif.
0 votes
Différentes techniques ont été proposées ici stackoverflow.com/questions/11598043/ il y a aussi des réponses en Swift.
0 votes
@ShadowOf mis à jour, merci pour la contribution.
0 votes
Swift - 4.0 Cliquez sur le lièvre pour une réponse
0 votes
cette réponse était déjà disponible au moment où vous avez posté votre question. De manière générale, je pense que cette question et l'autre sont très similaires, voire identiques.
0 votes
Duplicata possible de Obtenir une couleur légèrement plus claire et plus foncée avec UIColor