1

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

#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键盘颜色一致。

在此处输入图像描述

4

6 回答 6

1
于 2013-09-11T10:12:39.180 回答
1

我找到了这个片段,您可以在其中传递您的十六进制值并UIColor返回 a:

// Assumes input like "#00FF00" (#RRGGBB).
+ (UIColor *)colorFromHexString:(NSString *)hexString{
    if(hexString.length){
        unsigned rgbValue = 0;
        NSScanner *scanner = [NSScanner scannerWithString:hexString];
        [scanner setScanLocation:1]; // bypass '#' character
        [scanner scanHexInt:&rgbValue];
        return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 
                               green:((rgbValue & 0xFF00) >> 8)/255.0  
                                blue:(rgbValue & 0xFF)/255.0 
                               alpha:1.0];
    }
    return 0;
}
于 2015-03-04T13:21:23.877 回答
1

将您的十六进制字符串转换为整数,并使用结果调用宏。它应该为您提供正确的颜色。

unsigned result = 0;
NSScanner *scanner = [NSScanner scannerWithString:@"#DCDFE3"];

[scanner setScanLocation:1]; // bypass '#' character
[scanner scanHexInt:&result];
UIColor* color = UIColorFromRGB(result);

将 0x 与十六进制字符串一起使用也可以:

UIColorFromRGB(0xDCDFE3);

我最终得到的 UIColor 是 UIDeviceRGBColorSpace 0.862745 0.87451 0.890196 1

十六进制到整数的转换代码是从Objective-C 解析十六进制字符串到整数

于 2013-09-11T09:58:32.543 回答
0

所有这些解决方案都很好,但这里有一个不同的问题。

iOS 7 中的键盘是半透明的——你无法匹配它的颜色。我不记得工具栏模糊是否与键盘相同,但我建议尝试从工具栏中获取模糊图层并将其应用于您的UIView.

试试这个,看看会发生什么:

self.quickInputBar.backgroundColor = [UIColor clearColor];
UIToolbar *blurToolbar = [[UIToolbar alloc] initWithFrame:self.quickInputBar.frame];
blurToolbar.barStyle = UIBarStyleDefault;
[self.quickInputBar.superview insertSubview:blurToolbar belowSubview:self.quickInputBar];
于 2014-04-22T19:58:51.447 回答
0

键盘略显通透,搭配起来也不是那么容易。

但是,如果您在键盘抬起时将其放置在坚固的视野中,则可以始终如一地匹配它。

我使用了#DADCE3 的颜色。这与 iOS 8 上的轻型键盘相匹配。

我所做的是制作一个背景颜色为#DADCE3 的 UIView 并将其放在键盘后面。拆分键盘时(在 iPad 上),无法将键盘后面的块与实际键盘区分开来。这将表明它是相同的颜色。

于 2015-02-27T22:09:06.480 回答
-1

您可以使用像这样的转换器将您的十六进制颜色转换为rgb.

然后使用此代码创建一个UIColor

float greenColor = ???/255;
float blueColor = ???/255;
float redColor = ???/255;

UIColor* color = [UIColor colorWithRed:redColor 
                                 green:greenColor 
                                  blue:blueColor 
                                 alpha:1];
于 2013-09-11T10:11:32.877 回答