我希望能够将任何UIColor转换为渐变。我打算这样做的方式是使用核心图形来绘制渐变。我想要做的是得到一个颜色,比方说:
[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0];
再买一台UIColor,它有几种色调较暗,一些色调较亮。有人知道怎么做吗?谢谢。
发布于 2012-07-22 14:39:17
如果将RGB颜色转化为HSL color model,则可以将L=亮度分量从L= 0.0 (黑色)从L= 0.5 (自然色)更改为L= 1.0 (白色)。UIColor
不能直接处理HSL,但有转换RGB<-> HSL的公式。
发布于 2014-05-15 07:36:47
如果你想让user529758的解决方案使用灰色阴影(如[UIColor lightGrayColor]
或[UIColor darkGrayColor]
),你必须像这样改进它:
- (UIColor *)lighterColor
{
CGFloat h, s, b, a;
if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) {
return [UIColor colorWithHue:h
saturation:s
brightness:MIN(b * 1.3, 1.0)
alpha:a];
}
CGFloat white, alpha;
if ([self getWhite:&white alpha:&alpha]) {
white = MIN(1.3*white, 1.0);
return [UIColor colorWithWhite:white alpha:alpha];
}
return nil;
}
在灰色阴影上调用时,getHue:saturation:brightness:alpha
会失败(并返回false
),因此您需要使用getWhite:alpha
。
发布于 2015-02-27 22:07:58
UIColor扩展和修复lighterColorForColor
extension UIColor {
class func darkerColorForColor(color: UIColor) -> UIColor {
var r:CGFloat = 0, g:CGFloat = 0, b:CGFloat = 0, a:CGFloat = 0
if color.getRed(&r, green: &g, blue: &b, alpha: &a){
return UIColor(red: max(r - 0.2, 0.0), green: max(g - 0.2, 0.0), blue: max(b - 0.2, 0.0), alpha: a)
}
return UIColor()
}
class func lighterColorForColor(color: UIColor) -> UIColor {
var r:CGFloat = 0, g:CGFloat = 0, b:CGFloat = 0, a:CGFloat = 0
if color.getRed(&r, green: &g, blue: &b, alpha: &a){
let tmpColor = UIColor(red: min(r + 0.2, 1.0), green: min(g + 0.2, 1.0), blue: min(b + 0.2, 1.0), alpha: a)
println(tmpColor)
return tmpColor
}
return UIColor()
}
}
https://stackoverflow.com/questions/11598043
复制相似问题