gpt4 book ai didi

ios - 如何使用 UIColor 重建此 Color DCDFE3?使其显示正确的颜色

转载 作者:行者123 更新时间:2023-11-29 10:55:11 24 4
gpt4 key购买 nike

我目前正在使用这个片段来解析十六进制颜色引用。但是我发现在解析“DCDFE3”时,模拟器和机器中的显示颜色都是错误的。我认为这可能是由设备进程引起的,但我不知道如何解决这个问题。

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

宏是这样使用的:

self.quickInputBar.backgroundColor = UIColorFromRGB(0xDCDFE3);

不同的灰色,目的是让上边栏和iOS7键盘颜色一样。

enter image description here

最佳答案

我为此编写了一个类别,而不是宏。它处理格式为 @"#17BAFA(FF)", @"#ABC(F)", @"17BAFA", @"0xABC",…

因为它使用消息发送,而不是宏调用,所以在 Objective-C 的上下文中感觉更自然。

UIColor *color = [UIColor colorFromHexString:@"#DCDFE3"]; 一样使用它;

之后你可以检查if(!color) {//must be an invalid format

@implementation UIColor (Creation)

+(UIColor *)_colorFromHex:(NSUInteger)hexInt
{
int r,g,b,a;

r = (hexInt >> 030) & 0xFF;
g = (hexInt >> 020) & 0xFF;
b = (hexInt >> 010) & 0xFF;
a = hexInt & 0xFF;

return [UIColor colorWithRed:r / 255.0f
green:g / 255.0f
blue:b / 255.0f
alpha:a / 255.0f];
}

+(UIColor *)colorFromHexString:(NSString *)hexString
{
hexString = [hexString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if ([hexString hasPrefix:@"#"])
hexString = [hexString substringFromIndex:1];
else if([hexString hasPrefix:@"0x"])
hexString = [hexString substringFromIndex:2];

int l = [hexString length];
if ((l!=3) && (l!=4) && (l!=6) && (l!=8))
return nil;

if ([hexString length] > 2 && [hexString length]< 5) {
NSMutableString *newHexString = [[NSMutableString alloc] initWithCapacity:[hexString length]*2];
[hexString enumerateSubstringsInRange:NSMakeRange(0, [hexString length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring,
NSRange substringRange,
NSRange enclosingRange,
BOOL *stop)
{
[newHexString appendFormat:@"%@%@", substring, substring];
}];
hexString = newHexString;
}

if ([hexString length] == 6)
hexString = [hexString stringByAppendingString:@"ff"];

NSScanner *scanner = [NSScanner scannerWithString:hexString];
unsigned hexNum;
if (![scanner scanHexInt:&hexNum])
return nil;
return [self _colorFromHex:hexNum];
}

@end

当我用 Photoshop 选择键盘背景色时,值为 "0xD9DCE0",而不是 "0xDCDFE3"

关于ios - 如何使用 UIColor 重建此 Color DCDFE3?使其显示正确的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18737514/

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