如何从int正确设置UIColor?

Jos*_*ang 4 uicolor implicit-conversion ios

我想设置textColorUITextView由分配一个值.

在我的计划早期

textView.textColor = 0x000000;
Run Code Online (Sandbox Code Playgroud)

但后来,当我有

textView.textColor = 0x888888;
Run Code Online (Sandbox Code Playgroud)

弹出一个致命的错误说:"ARC不允许将'int'隐式转换为'UIColor*'".

如何将我的int转换为UIColor以正确设置文本颜色?为什么它与0x000000而不是0x888888一起使用?

Nit*_*hel 11

如您submited回答,这不是一个答案相提并论UIColorFromRGB的是,在上述定义一个宏@implementation

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0];
Run Code Online (Sandbox Code Playgroud)

然后就可以使用了

textView.textColor = UIColorFromRGB(0x888888);
Run Code Online (Sandbox Code Playgroud)

您可以UIColor在目标c中使用其属性来设置文本bg-color等的颜色

在此输入图像描述


Sur*_*gch 6

Swift版本

您可以使用以下函数将RGB十六进制颜色转换Int为a UIColor.

func uiColorFromHex(rgbValue: Int) -> UIColor {

    // &  binary AND operator to zero out other color values
    // >>  bitwise right shift operator
    // Divide by 0xFF because UIColor takes CGFloats between 0.0 and 1.0

    let red =   CGFloat((rgbValue & 0xFF0000) >> 16) / 0xFF
    let green = CGFloat((rgbValue & 0x00FF00) >> 8) / 0xFF
    let blue =  CGFloat(rgbValue & 0x0000FF) / 0xFF
    let alpha = CGFloat(1.0)

    return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}
Run Code Online (Sandbox Code Playgroud)

并且可以像这样使用

let myColorValue = 0x888888
let color = uiColorFromHex(myColorValue)
Run Code Online (Sandbox Code Playgroud)