iOS SDK Interface Builder的RGB滑块产生与UIColor withRGB不同的颜色

时间:2012-02-18 13:39:14

标签: ios ios5 interface-builder uicolor

在界面构建器中,我将UILabel的颜色更改为此屏幕截图,其中红色255,绿色159,蓝色0和不透明度为100%。它给出了橙色。

IB RGB Sliders Color Produced in Center

我以编程方式更改UILabel颜色,而不是使用此...将其更改回原始颜色。

timeLabel.textColor = [UIColor colorWithRed:255.0 green:159.0 blue:0.0 alpha:1.0];

它给出了这种颜色.... UIColor color

我认为应该是一样的,有谁知道我做错了什么? 请帮助,谢谢。

4 个答案:

答案 0 :(得分:7)

编辑:两年后,这篇文章仍然得到一些业力和评论。修复了我对旧的答案。

为UIColor添加可在0到255之间输入的函数的最明智且可重用的方法是创建自定义类别。更容易阅读,更容易调试,更容易让其他人做出贡献,并使项目保持清洁和结构化,因为它不仅仅是视图控制器。因此,添加以下文件,并在您需要的m文件中导入它们

的UIColor + Extra.h

@interface UIColor (Extra)
+ (UIColor *)colorWithR:(uint)red G:(uint)green B:(uint)blue A:(uint) alpha
+ (UIColor *) randomColor;
+ (UIColor *) colorWithHex:(uint) hex;
@end

的UIColor + Extra.m

#import "UIColor+Extra.h"

@implementation UIColor (Extra)

+ (UIColor *)colorWithR:(uint)red G:(uint)green B:(uint)blue A:(uint) alpha
{
  return [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/100.f];
}

+ (UIColor *) randomColor
{
    CGFloat red =  (CGFloat)random()/(CGFloat)RAND_MAX;
    CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX;
    CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX;
    return [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
}
+ (UIColor *) colorWithHex:(uint) hex
{
    int red, green, blue, alpha;

    blue = hex & 0x000000FF;
    green = ((hex & 0x0000FF00) >> 8);
    red = ((hex & 0x00FF0000) >> 16);
    alpha = ((hex & 0xFF000000) >> 24);

    return [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.f];
}
@end

答案 1 :(得分:2)

timeLabel.textColor = [UIColor colorWithRed:255/255.0f green:159.0/255.0f blue:0.0/255.0f alpha:1.0];

答案 2 :(得分:0)

在Xcode的蜡笔调色板中重现颜色的一种非常简单的方法是使用此链接https://github.com/rob-brown/RBCategories/blob/master/UIColor+RBExtras.m

它允许像这样的蜡笔颜色.... UIColor *ThisColor = [UIColor blueberryCrayonColor];

答案 3 :(得分:0)

尝试设置为“设备RGB” - 这对我有用

enter image description here