如何从int中正确设置UIColor?

我想通过分配一个值来设置UITextViewtextColor

早些时候在我的程序中

 textView.textColor = 0x000000; 

但后来,当我有

 textView.textColor = 0x888888; 

popup一个致命的错误说:“不允许隐式转换'int'到'UIColor *'ARC”。

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

作为您提出submited答案这不是一个答案UIColorFromRGB是一个macros定义上面@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]; 

那你可以用like

 textView.textColor = UIColorFromRGB(0x888888); 

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

在这里输入图像说明

Swift版本

您可以使用以下函数将RGBhex颜色Int转换为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) } 

而且可以这样使用

 let myColorValue = 0x888888 let color = uiColorFromHex(myColorValue) 

有必要使用

 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]; 

我想通了你可以使用UIColorFromRGB()将其转换为UIColor。

例如

 textView.textColor = UIColorFromRGB(0x888888); 

您可以通过执行以下步骤来完成此操作:

  1. 使用HexToRGB将hex值转换为RGB。

  2. 然后通过这样改变你的文本视图的文本颜色:

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