6

我正在尝试通过为其分配一个值来设置textColora UITextView

在程序的早些时候,我有

textView.textColor = 0x000000;

但后来,当我有

textView.textColor = 0x888888;

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

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

4

6 回答 6

12

正如您提交的答案一样,这不是答案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);

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

在此处输入图像描述

于 2013-10-16T14:04:44.390 回答
11

斯威夫特版本

您可以使用以下函数将 RGB 十六进制颜色转换IntUIColor.

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)
}

并且可以这样使用

let myColorValue = 0x888888
let color = uiColorFromHex(myColorValue)
于 2015-09-11T08:16:06.310 回答
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];
于 2013-10-16T13:59:17.607 回答
0

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

例如

textView.textColor = UIColorFromRGB(0x888888);
于 2013-10-16T13:56:29.773 回答
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
    
于 2013-10-16T14:13:25.563 回答
0

Swift 扩展版本

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)
于 2018-12-15T10:55:06.150 回答