首页 > 代码库 > iOS获取UIColor对象的CMYK值
iOS获取UIColor对象的CMYK值
/**
* 获取UIColor对象的CMYK字符串值。
*/
- (NSString *)getCMYKStringValueByColor:(UIColor *)originColor{
// Method provided by the Colours class extension
NSDictionary *cmykDict = [selfgetCMYKValueByColor:originColor];
return [NSStringstringWithFormat:@"(%0.2f, %0.2f, %0.2f, %0.2f)",
[cmykDict[@"C"]floatValue],
[cmykDict[@"M"]floatValue],
[cmykDict[@"Y"]floatValue],
[cmykDict[@"K"]floatValue]];
}
/**
* 获取UIColor对象的CMYK值。
*
* @return
*/
- (NSDictionary *)getCMYKValueByColor:(UIColor *)originColor
{
// Convert RGB to CMY
NSDictionary *rgb = [selfgetRGBDictionaryByColor:originColor];
CGFloat C =1 - [rgb[@"R"]floatValue];
CGFloat M =1 - [rgb[@"G"]floatValue];
CGFloat Y =1 - [rgb[@"B"]floatValue];
// Find K
CGFloat K =MIN(1,MIN(C,MIN(Y, M)));
if (K ==1) {
C =0;
M =0;
Y =0;
}
else {
void (^newCMYK)(CGFloat *);
newCMYK = ^(CGFloat *x){
*x = (*x - K)/(1 - K);
};
newCMYK(&C);
newCMYK(&M);
newCMYK(&Y);
}
return@{@"C":@(C),
@"M":@(M),
@"Y":@(Y),
@"K":@(K)};
}
/**
* 获取UIColor对象的RGB值。
*
* @return 包含rgb值的字典对象。
*/
- (NSDictionary *)getRGBDictionaryByColor:(UIColor *)originColor
{
CGFloat r=0,g=0,b=0,a=0;
if ([selfrespondsToSelector:@selector(getRed:green:blue:alpha:)]) {
[originColorgetRed:&rgreen:&gblue:&balpha:&a];
}
else {
constCGFloat *components =CGColorGetComponents(originColor.CGColor);
r = components[0];
g = components[1];
b = components[2];
a = components[3];
}
return@{@"R":@(r),
@"G":@(g),
@"B":@(b),
@"A":@(a)};
}
iOS获取UIColor对象的CMYK值