2012-02-18 50 views
6

在界面生成器中,我將UILabel的顏色更改爲此屏幕截圖的紅色255,綠色159,藍色0和不透明度爲100%。這給了一個橙色。iOS SDK界面生成器的RGB滑塊產生與UIColor不同的顏色與RGB

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

我認爲它應該是一樣的,有人知道我在做什麼錯了嗎? 請幫忙,謝謝。

回答

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

非常感謝。當我能夠接受這個答案時。 – OscarTheGrouch 2012-02-18 13:45:40

+1

您可能會添加一些解釋,而不僅僅是一個未格式化的代碼示例 – jrturton 2012-02-18 13:46:20

+0

UIColor僅接受0到1的屬性 – OscarTheGrouch 2012-02-18 13:58:31

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 
+0

感謝您的宏,並建議在哪裏放置它們:)。這些宏將使代碼更容易閱讀,並獲取其他程序中創建的RGB顏色。 – 2012-11-30 09:47:08

+0

我一般都會提醒大家使用宏,因爲類擴展或本地方法更安全。 使用.pch這是可怕的,我會給你一個-1。 .pch是一個通過允許編譯器優化常用標頭解析來加速編譯的設備。 使用它作爲傳播可能需要或可能不需要的宏的方式在小型項目中是不必要的,在其他任何情況下都是可憎的。(咆哮) – 2014-09-15 09:12:43

+0

有效的評論,@GordonDove,並沒有被視爲一個咆哮。在12年2月,我可能會將這個答案作爲一個宏添加到pch文件中,但是今天我還是非常瞭解,非常感謝SO上的一些有見地的評論和答案。由於這個答案仍然不斷給我SO-業力,我應該增加一個更好,更精緻的... ... – 2014-09-16 18:42:26

0

嘗試設置 「設備RGB」 - 這爲我工作

enter image description here