首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从UIColor获得略微变亮和变暗的颜色

从UIColor获得略微变亮和变暗的颜色
EN

Stack Overflow用户
提问于 2012-07-22 13:50:12
回答 8查看 60K关注 0票数 148

我希望能够将任何UIColor转换为渐变。我打算这样做的方式是使用核心图形来绘制渐变。我想要做的是得到一个颜色,比方说:

代码语言:javascript
复制
[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0];

再买一台UIColor,它有几种色调较暗,一些色调较亮。有人知道怎么做吗?谢谢。

EN

回答 8

Stack Overflow用户

发布于 2012-07-22 14:39:17

如果将RGB颜色转化为HSL color model,则可以将L=亮度分量从L= 0.0 (黑色)从L= 0.5 (自然色)更改为L= 1.0 (白色)。UIColor不能直接处理HSL,但有转换RGB<-> HSL的公式。

票数 14
EN

Stack Overflow用户

发布于 2014-05-15 07:36:47

如果你想让user529758的解决方案使用灰色阴影(如[UIColor lightGrayColor][UIColor darkGrayColor] ),你必须像这样改进它:

代码语言:javascript
复制
- (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

票数 3
EN

Stack Overflow用户

发布于 2015-02-27 22:07:58

UIColor扩展和修复lighterColorForColor

代码语言:javascript
复制
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()
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11598043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档