我正在尝试通过为其分配一个值来设置textColor
a UITextView
。
在程序的早些时候,我有
textView.textColor = 0x000000;
但后来,当我有
textView.textColor = 0x888888;
弹出一个致命错误说:“ARC不允许将'int'隐式转换为'UIColor *'”。
如何将我的 int 转换为 UIColor 以正确设置文本颜色?为什么它适用于 0x000000 而不是 0x888888?
我正在尝试通过为其分配一个值来设置textColor
a UITextView
。
在程序的早些时候,我有
textView.textColor = 0x000000;
但后来,当我有
textView.textColor = 0x888888;
弹出一个致命错误说:“ARC不允许将'int'隐式转换为'UIColor *'”。
如何将我的 int 转换为 UIColor 以正确设置文本颜色?为什么它适用于 0x000000 而不是 0x888888?
正如您提交的答案一样,这不是答案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 等的颜色
您可以使用以下函数将 RGB 十六进制颜色转换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将十六进制值转换为 RGB 。
然后通过执行以下操作更改 textview 的文本颜色:
textview.textColor = [UIColor colorWithRed:244/255.00f
green:133/255.00f blue:116/255.00f alpha:1.0f]; // values are just an example
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)