iOS 16进制颜色字符串转换成可以正常使用的UIColor

来源:互联网 发布:全球最出名的程序员 编辑:程序博客网 时间:2024/05/17 07:32

“#ffffff”类型的十六进制字符串转换成数字
分段截取计算UIColor的RGB 直接返回颜色

传入字符串后分段截取调用字符串转换Int的方法

- (UIColor *)getColor:(NSString *)hexColor {    NSString *string = [hexColor substringFromIndex:1];//去掉#号    unsigned int red,green,blue;    NSRange range;    range.length = 2;    range.location = 0;    /* 调用下面的方法处理字符串 */    red = [self stringToInt:[string substringWithRange:range]];    range.location = 2;    green = [self stringToInt:[string substringWithRange:range]];    range.location = 4;    blue = [self stringToInt:[string substringWithRange:range]];    return [UIColor colorWithRed:(float)(red/255.0f) green:(float)(green / 255.0f) blue:(float)(blue / 255.0f) alpha:1.0f];}

截取后的字符串处理

- (int)stringToInt:(NSString *)string {    unichar hex_char1 = [string characterAtIndex:0]; /* 两位16进制数中的第一位(高位*16) */    int int_ch1;    if (hex_char1 >= '0' && hex_char1 <= '9')        int_ch1 = (hex_char1 - 48) * 16;   /* 0 的Ascll - 48 */    else if (hex_char1 >= 'A' && hex_char1 <='F')        int_ch1 = (hex_char1 - 55) * 16; /* A 的Ascll - 65 */    else        int_ch1 = (hex_char1 - 87) * 16; /* a 的Ascll - 97 */    unichar hex_char2 = [string characterAtIndex:1]; /* 两位16进制数中的第二位(低位) */    int int_ch2;    if (hex_char2 >= '0' && hex_char2 <='9')        int_ch2 = (hex_char2 - 48); /* 0 的Ascll - 48 */    else if (hex_char1 >= 'A' && hex_char1 <= 'F')        int_ch2 = hex_char2 - 55; /* A 的Ascll - 65 */    else        int_ch2 = hex_char2 - 87; /* a 的Ascll - 97 */    return int_ch1+int_ch2;}

方法使用

/* 直接调用即可 */self.backgroundColor = [self getColor:@"#ff5c6f"];
0 0
原创粉丝点击