টি এল; ডিআর:
সুইফট:
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];
}
@ আরচ্যাম্পোরলিয়ার @ ইউজার ৫২৯75৫৮ (স্বীকৃত উত্তর) - এ এইচএসবি (বা এইচএসভি) এবং আরজিবি সমাধানগুলি সম্পূর্ণরূপে পৃথক ফলাফল দেয় তার মন্তব্যে ঠিক ছিল। আরজিবি স্রেফ জুড়ে (বা রঙটিকে আরও ঘনিষ্ঠ করে তোলে) সাদা করে তোলে এবং এইচএসবি দ্রবণটি ব্রিগনেস স্কলে প্রান্তটির আরও কাছাকাছি এনে দেয় - যা মূলত কালো দিয়ে শুরু হয় এবং খাঁটি বর্ণের সাথে শেষ হয় ...
মূলত উজ্জ্বলতা (মান) রঙটি কম বা কালোকে আরও কাছাকাছি করে তোলে, যেখানে স্যাচুরেশন এটিকে সাদা বা কম বেশি করে তোলে ...
যেমনটি এখানে দেখা গেছে:
সুতরাং কোনও রঙকে আসলে আরও উজ্জ্বল করার সমাধান (অর্থাত্ শ্বেতের কাছাকাছি ...) এটির স্যাচুরেশন মানটিকে আরও ছোট করে তুলবে , ফলে এই সমাধানটি পাওয়া যাবে:
- (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;
}