टी एल; डॉ:
स्विफ्ट:
extension UIColor {
var lighterColor: UIColor {
return lighterColor(removeSaturation: 0.5, resultAlpha: -1)
}
func lighterColor(removeSaturation val: CGFloat, resultAlpha alpha: CGFloat) -> UIColor {
var h: CGFloat = 0, s: CGFloat = 0
var b: CGFloat = 0, a: CGFloat = 0
guard getHue(&h, saturation: &s, brightness: &b, alpha: &a)
else {return self}
return UIColor(hue: h,
saturation: max(s - val, 0.0),
brightness: b,
alpha: alpha == -1 ? a : alpha)
}
}
उपयोग:
let lightColor = somethingDark.lighterColor
उद्देश्य सी:
- (UIColor *)lighterColorRemoveSaturation:(CGFloat)removeS
resultAlpha:(CGFloat)alpha {
CGFloat h,s,b,a;
if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) {
return [UIColor colorWithHue:h
saturation:MAX(s - removeS, 0.0)
brightness:b
alpha:alpha == -1? a:alpha];
}
return nil;
}
- (UIColor *)lighterColor {
return [self lighterColorRemoveSaturation:0.5
resultAlpha:-1];
}
@rchampourlier @ user529758 (स्वीकृत जवाब) - HSB (या HSV) और RGB समाधानों के बारे में उनकी टिप्पणी में बिल्कुल अलग परिणाम देते हैं। RGB बस जोड़ता है (या रंग को करीब से सफेद करता है), और HSB समाधान ब्रिगनेस स्केल में रंग को किनारे के करीब लाता है - जो मूल रूप से काले रंग से शुरू होता है और शुद्ध रंग के साथ समाप्त होता है ...
मूल रूप से चमक (मूल्य) रंग को कम या अधिक काले रंग के करीब बनाता है, जहां संतृप्ति इसे कम या अधिक सफेद के करीब बनाती है ...
जैसा कि यहां देखा गया है:
तो एक रंग वास्तव में उज्जवल बनाने के लिए समाधान (यानी सफेद के करीब ...) यह संतृप्ति मूल्य छोटा करने के लिए किया जाएगा , जिसके परिणामस्वरूप समाधान:
- (UIColor *)lighterColor {
CGFloat h,s,b,a;
if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) {
return [UIColor colorWithHue:h
saturation:MAX(s - 0.3, 0.0)
brightness:b /*MIN(b * 1.3, 1.0)*/
alpha:a];
}
return nil;
}