如何从int正确设置UIColor?

时间:2013-10-16 13:48:52

标签: ios implicit-conversion uicolor

我正在尝试通过为其分配值来设置textColor的{​​{1}}。

我早期的程序

UITextView

但稍后,当我有

textView.textColor = 0x000000;

弹出一个致命的错误说:“ARC禁止将'int'隐式转换为'UIColor *'。”

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

5 个答案:

答案 0 :(得分:11)

作为你提交答案的标准答案这不是答案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];

然后你就可以使用

textView.textColor = UIColorFromRGB(0x888888);

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

enter image description here

答案 1 :(得分:1)

有必要使用

textView.textColor = [UIColor colorWithRed:<#(CGFloat)#> green:<#(CGFloat)#> blue:<#(CGFloat)#> alpha:<#(CGFloat)#>];

试一试:

- (UIColor *)UIColorFromRGB:(NSInteger)rgbValue {
    return [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0
                           green:((float)((rgbValue & 0xFF00) >> 8))/255.0
                            blue:((float)(rgbValue & 0xFF))/255.0
                           alpha:1.0];
}

...

textView.textColor = [self UIColorFromRGB:0x888888];

答案 2 :(得分:0)

我发现你可以使用UIColorFromRGB()将其转换为UIColor。

e.g。

textView.textColor = UIColorFromRGB(0x888888);

答案 3 :(得分:0)

您可以按照以下步骤执行此操作:

  1. 使用HexToRGB将十六进制值转换为RGB。

  2. 然后通过执行以下操作更改textview的文本颜色:

     textview.textColor = [UIColor colorWithRed:244/255.00f
        green:133/255.00f blue:116/255.00f alpha:1.0f]; // values are just an example
    

答案 4 :(得分:0)

快速扩展版本

public extension UIColor {
public convenience init<T>(rgbValue: T, alpha: CGFloat = 1) where T: BinaryInteger {
    guard rgbValue > 0 else {
        self.init(red: 0, green: 0, blue: 0, alpha: alpha)
        return
    }

    guard rgbValue < 0xFFFFFF else {
        self.init(red: 1, green: 1, blue: 1, alpha: alpha)
        return
    }

    let r: CGFloat = CGFloat(((rgbValue & 0xFF0000) >> 16) / 0xFF)
    let g: CGFloat = CGFloat((rgbValue & 0x00FF00) >> 8 / 0xFF)
    let b: CGFloat = CGFloat((rgbValue & 0x0000FF) / 0xFF)

    self.init(red: r, green: g, blue: b, alpha: alpha)
}

}

用法:

let white =  UIColor(rgbValue: 16777215)
let red =    UIColor(rgbValue: 16711680)
let green =  UIColor(rgbValue: 0x00FF00)
let blue =   UIColor(rgbValue: 0x0000FF)
let yellow = UIColor(rgbValue: 0xFFFF00)
let black =  UIColor(rgbValue: 0)