gpt4 book ai didi

iphone - 如何将 HEX RGB 颜色代码转换为 UIColor?

转载 作者:行者123 更新时间:2023-12-03 18:09:24 33 4
gpt4 key购买 nike

我有一个像 #ffffff 这样的 RGB 十六进制代码作为 NSString,并且想要将其转换为 UIColor。有没有简单的方法可以做到这一点?

最佳答案

In some code of mine ,我使用 2 个不同的函数:

void SKScanHexColor(NSString * hexString, float * red, float * green, float * blue, float * alpha) {
NSString *cleanString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@""];
if([cleanString length] == 3) {
cleanString = [NSString stringWithFormat:@"%@%@%@%@%@%@",
[cleanString substringWithRange:NSMakeRange(0, 1)],[cleanString substringWithRange:NSMakeRange(0, 1)],
[cleanString substringWithRange:NSMakeRange(1, 1)],[cleanString substringWithRange:NSMakeRange(1, 1)],
[cleanString substringWithRange:NSMakeRange(2, 1)],[cleanString substringWithRange:NSMakeRange(2, 1)]];
}
if([cleanString length] == 6) {
cleanString = [cleanString stringByAppendingString:@"ff"];
}

unsigned int baseValue;
[[NSScanner scannerWithString:cleanString] scanHexInt:&baseValue];

if (red) { *red = ((baseValue >> 24) & 0xFF)/255.0f; }
if (green) { *green = ((baseValue >> 16) & 0xFF)/255.0f; }
if (blue) { *blue = ((baseValue >> 8) & 0xFF)/255.0f; }
if (alpha) { *alpha = ((baseValue >> 0) & 0xFF)/255.0f; }
}

然后我这样使用它:

UIColor * SKColorFromHexString(NSString * hexString) {
float red, green, blue, alpha;
SKScanHexColor(hexString, &red, &green, &blue, &alpha);

return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}

如果您更喜欢将其用作 UIColor 类别,那么只需更改几行即可:

+ (UIColor *) colorFromHexString:(NSString *)hexString {
NSString *cleanString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@""];
if([cleanString length] == 3) {
cleanString = [NSString stringWithFormat:@"%@%@%@%@%@%@",
[cleanString substringWithRange:NSMakeRange(0, 1)],[cleanString substringWithRange:NSMakeRange(0, 1)],
[cleanString substringWithRange:NSMakeRange(1, 1)],[cleanString substringWithRange:NSMakeRange(1, 1)],
[cleanString substringWithRange:NSMakeRange(2, 1)],[cleanString substringWithRange:NSMakeRange(2, 1)]];
}
if([cleanString length] == 6) {
cleanString = [cleanString stringByAppendingString:@"ff"];
}

unsigned int baseValue;
[[NSScanner scannerWithString:cleanString] scanHexInt:&baseValue];

float red = ((baseValue >> 24) & 0xFF)/255.0f;
float green = ((baseValue >> 16) & 0xFF)/255.0f;
float blue = ((baseValue >> 8) & 0xFF)/255.0f;
float alpha = ((baseValue >> 0) & 0xFF)/255.0f;

return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}

这将处理“#abc”、“#abcdef31”等字符串。

关于iphone - 如何将 HEX RGB 颜色代码转换为 UIColor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3805177/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com