我需要将 UIColor 转换为带有颜色名称的 NSString,即
[UIColor redColor];
应该成为
@"RedColor"
我已经尝试过[UIColor redColor].CIColor.stringRepresentation
,但它会导致编译器错误
我需要将 UIColor 转换为带有颜色名称的 NSString,即
[UIColor redColor];
应该成为
@"RedColor"
我已经尝试过[UIColor redColor].CIColor.stringRepresentation
,但它会导致编译器错误
只是扩展@Luke链接到的答案,它创建了一个CGColorRef传递给CIColor:
CGColorRef colorRef = [UIColor grayColor].CGColor;
您可以改为简单地传递您正在处理的 UIColor 的 CGColor 属性,例如:
NSString *colorString = [[CIColor colorWithCGColor:[[UIColor redColor] CGColor]] stringRepresentation];
不要忘记导入 Core Image 框架。
旁注,从字符串转换回 UIColor 的快速简便的方法可能是这样的:
NSArray *parts = [colorString componentsSeparatedByString:@" "];
UIColor *colorFromString = [UIColor colorWithRed:[parts[0] floatValue] green:[parts[1] floatValue] blue:[parts[2] floatValue] alpha:[parts[3] floatValue]];
这是将 UIColor 转换为 NSString 的最短方法:
- (NSString *)stringFromColor:(UIColor *)color
{
const size_t totalComponents = CGColorGetNumberOfComponents(color.CGColor);
const CGFloat * components = CGColorGetComponents(color.CGColor);
return [NSString stringWithFormat:@"#%02X%02X%02X",
(int)(255 * components[MIN(0,totalComponents-2)]),
(int)(255 * components[MIN(1,totalComponents-2)]),
(int)(255 * components[MIN(2,totalComponents-2)])];
}