48

我想NSAttributedString在我的项目中使用,但是当我尝试设置颜色时,不是来自标准集(redColor,blackColorgreenColorUILabel的颜色以白色显示这些字母。这是我的代码行。

[attributedString addAttribute:NSForegroundColorAttributeName
                         value:[UIColor colorWithRed:66
                                               green:79
                                                blue:91
                                               alpha:1]
                         range:NSMakeRange(0, attributedString.length)];

我尝试使用CIColorCore Image 框架制作颜色,但它显示了相同的结果。我应该在我的代码中进行哪些更改才能以正确的方式执行它?

Thx 的答案,伙计们!

4

5 回答 5

118

您的值不正确,您需要将每个颜色值除以 255.0。

[UIColor colorWithRed:66.0f/255.0f
                green:79.0f/255.0f
                 blue:91.0f/255.0f
                alpha:1.0f];

文档状态:

+ (UIColor *)colorWithRed:(CGFloat)red
                    green:(CGFloat)green
                     blue:(CGFloat)blue
                    alpha:(CGFloat)alpha

参数

red 颜色对象的红色分量,指定为 0.0 到 1.0 之间的值。

green 颜色对象的绿色分量,指定为 0.0 到 1.0 之间的值。

blue 颜色对象的蓝色分量,指定为 0.0 到 1.0 之间的值。

alpha 颜色对象的不透明度值,指定为 0.0 到 1.0 之间的值。

参考这里。

于 2012-11-04T23:50:58.103 回答
29

我最喜欢的宏之一,没有项目没有:

#define RGB(r, g, b) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:1.0]
#define RGBA(r, g, b, a) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:a]

使用类似:

[attributedString addAttribute:NSForegroundColorAttributeName
                         value:RGB(66, 79, 91)
                         range:NSMakeRange(0, attributedString.length)];
于 2014-01-23T00:52:07.240 回答
5

UIColor使用范围从 0 到 1.0,而不是整数到 255 .. 试试这个:

// create color
UIColor *color = [UIColor colorWithRed:66/255.0
                                 green:79/255.0
                                  blue:91/255.0
                                 alpha:1];

// use in attributed string
[attributedString addAttribute:NSForegroundColorAttributeName
                         value:color
                         range:NSMakeRange(0, attributedString.length)];
于 2012-11-04T23:51:33.507 回答
4

请尝试代码

[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0] range:NSMakeRange(0, attributedString.length)];

Label.textColor=[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0];  

UIColor 的 RGB 分量在 0 和 1 之间缩放,最高不超过 255。

于 2012-11-07T16:01:24.357 回答
3

自从@Jaswanth Kumar 问起,这是LSwiftSwift的版本:

extension UIColor {
    convenience init(rgb:UInt, alpha:CGFloat = 1.0) {
        self.init(
            red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
            green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
            blue: CGFloat(rgb & 0x0000FF) / 255.0,
            alpha: CGFloat(alpha)
        )
    }
}

用法:let color = UIColor(rgb: 0x112233)

于 2016-07-06T06:20:19.707 回答