在我的编辑器中我有一个标签,在UITapGestureRecognizer上我需要获取文本的文本颜色
NSLog(@"Fontcolor---- %@",sanlabel.textColor);
但这段代码还给我了
UIDeviceRGBColorSpace 0.686275 1 1 1
如何以正确的格式获取颜色代码,以便我可以将其作为
UIColorFromRGB(0X2c3836)
答案 0 :(得分:0)
您可以使用此方法(取自here):
- (NSString *) htmlFromUIColor:(UIColor *)_color {
if (CGColorGetNumberOfComponents(_color.CGColor) < 4) {
const CGFloat *components = CGColorGetComponents(_color.CGColor);
_color = [UIColor colorWithRed:components[0] green:components[0] blue:components[0] alpha:components[1]];
}
if (CGColorSpaceGetModel(CGColorGetColorSpace(_color.CGColor)) != kCGColorSpaceModelRGB) {
return [NSString stringWithFormat:@"#FFFFFF"];
}
return [NSString stringWithFormat:@"#%02X%02X%02X", (int)((CGColorGetComponents(_color.CGColor))[0]*255.0), (int)((CGColorGetComponents(_color.CGColor))[1]*255.0), (int)((CGColorGetComponents(_color.CGColor))[2]*255.0)];
}
答案 1 :(得分:0)
我假设您正在设置标签的文本,这是某种颜色定义,然后您想知道哪个标签被点击了?
我认为这是错误的方法,更好的方法是使用标签的标签来索引颜色定义的数组。这样更快,允许您稍后更改标签的文本格式(可能用于国际化),而不会影响功能。
假设有3个标签;定义每个标签的颜色:
static unsigned _labelColours[3] = {
0x2c3836, 0x2c3837, 0x2c3838
};
现在将3个标签的标签设置为100(比如说)。这可以在代码中或在IB内完成。
然后,当您想知道分配给标签的颜色是什么时,只需在操作方法中执行此操作:
- (IBAction)labelWasTouched:(id)sender {
NSInteger tag = [sender tag];
NSAssert(tag >= 100 && tag <= 102, @"Tag out-of-range");
unsigned colour = _labelColours[tag - 100];
UIColor *colourObj = UIColorFromRGB(colour);
}
答案 2 :(得分:0)
将UIDeviceRBGColorSpace中的每个值轻松乘以255.然后使用NSString :: stringWithFormat将值转换为带有%x的HEX。
此外:
int r, g, b, a;
r = (int)(0.686275 * 255);
g = b = 1*255;
NSString *hexStr = [NSString stringWithFormat:@"%x%x%x",r,g,b];