Iphone 十六进制到UIColorfromRGB

Iphone 十六进制到UIColorfromRGB,iphone,objective-c,uicolor,Iphone,Objective C,Uicolor,我正在学习一个教程 这是相当直接和简单的,只有两个步骤。但在最后一步中,我在UITextField中使用了hextText.text作为十六进制代码,但如何将其放入UIColorFromRGB?是一种避免宏内容的解决方案。您可以将其添加到UIColor的一个类别中,并更好地使用它。我认为索林的想法是正确的。更像可可粉,会减少头痛。要在较高级别上回答问题,需要将字符串转换为十六进制数,然后将结果值传递给宏。我认为最好将字符串值传递到Sorin链接中列出的类别中。这将解决任何情况 + (UIColo

我正在学习一个教程


这是相当直接和简单的,只有两个步骤。但在最后一步中,我在UITextField中使用了hextText.text作为十六进制代码,但如何将其放入UIColorFromRGB?

是一种避免宏内容的解决方案。您可以将其添加到UIColor的一个类别中,并更好地使用它。

我认为索林的想法是正确的。更像可可粉,会减少头痛。要在较高级别上回答问题,需要将字符串转换为十六进制数,然后将结果值传递给宏。我认为最好将字符串值传递到Sorin链接中列出的类别中。

这将解决任何情况

+ (UIColor *) colorWithHexString: (NSString *) stringToConvert{
    NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
    unsigned int r, g, b,alpha = 1;
    NSRange range;
    range.location = 0;
    range.length = 2;

    // String should be 6 or 8 characters
    if ([cString length] < 6) return [UIColor blackColor];
    // strip 0X if it appears
    if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];
    if ([cString hasPrefix:@"#"]) cString = [cString substringFromIndex:1];
    if ([cString length] == 8) {
        [[NSScanner scannerWithString:[cString substringWithRange:range]] scanHexInt:&alpha];
      cString = [cString substringFromIndex:2];
    }
    if ([cString length] != 6) return [UIColor blackColor];
    // Separate into r, g, b substrings

    NSString *rString = [cString substringWithRange:range];
    range.location = 2;
    NSString *gString = [cString substringWithRange:range];
    range.location = 4;
    NSString *bString = [cString substringWithRange:range];
    // Scan values
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];

    return [UIColor colorWithRed:((float) r / 255.0f)
                           green:((float) g / 255.0f)
                            blue:((float) b / 255.0f)
                           alpha:((float) alpha / 255.0f)];
}
+(UIColor*)colorWithHexString:(NSString*)stringToConvert{
NSString*cString=[[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]大写字符串];
无符号整数r,g,b,α=1;
NSRange范围;
range.location=0;
range.length=2;
//字符串应为6或8个字符
if([cString length]<6)返回[UIColor blackColor];
//如果出现,请删除0X
如果([cString hasPrefix:@“0X]”)cString=[cString substringFromIndex:2];
如果([cString hasPrefix:@“#“])cString=[cString substringFromIndex:1];
如果([cString length]==8){
[[NSScanner SCANNER WITHSTRING:[cString substringWithRange:range]]scanHexInt:&alpha];
cString=[cString substringfromfromindex:2];
}
如果([cString length]!=6)返回[UIColor blackColor];
//分为r、g、b子串
NSString*rString=[cString substringWithRange:range];
range.location=2;
NSString*gString=[cString substringWithRange:range];
range.location=4;
NSString*bString=[cString substringWithRange:range];
//扫描值
[[NSScanner scannerWithString:rsString]scanHexInt:&r];
[[NSScanner scannerWithString:gString]scanHexInt:&g];
[[NSScanner SCANNER WITHSTRING:bString]scanHexInt:&b];
返回[UIColor COLOR WITHRED:((浮动)r/255.0f)
绿色:((浮动)g/255.0f)
蓝色:((浮动)b/255.0f)
α:((浮动)α/255.0f)];
}