如何从int中正确设置UIColor?
我想通过分配一个值来设置UITextView
的textColor
。
早些时候在我的程序中
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);
您可以通过执行以下步骤来完成此操作:
-
使用HexToRGB将hex值转换为RGB。
-
然后通过这样改变你的文本视图的文本颜色:
textview.textColor = [UIColor colorWithRed:244/255.00f green:133/255.00f blue:116/255.00f alpha:1.0f]; // values are just an example