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)];
}