2014-04-27 25 views
-1

我運行到這裏奇怪的事情(的iOS 7時,Xcode 5):UIButton setTitleColor只適用於預設組件值ios7?

如果我用這個代碼,按鈕標題改變顏色:

[self.delayButton setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal]; 

但是,如果我用這個代碼,它只是變成黑色:

[self.delayButton setTitleColor:[UIColor colorWithRed:128/255 green:0/255 blue:128/255 alpha:1.0] forState:UIControlStateNormal]; 

(僅供參考 - 這也將變成黑色:)

UIColor *myColor=[UIColor colorWithRed:128/255 green:0/255 blue:128/255 alpha:1.0] forState:UIControlStateNormal]; 
[self.delayButton setTitleColor:[UIColor myColor] forState:UIControlStateNormal]; 

基本上,我創建/使用的任何顏色變成黑色,除了爲預設組件值,如「redColor」「blueColor」等....

任何想法爲什麼?

+0

Objective-C基於C,整數除法*截斷結果。 –

+0

你是對的 - 它是一個重複的 - 抱歉。 – wayneh

回答

1

您需要使用浮點值如下:

[UIColor colorWithRed:128.f/255 green:0.f/255 blue:128.f/255 alpha:1.0]; 

在你的代碼使用整數除法:128/255結果0。這就是爲什麼您會看到RGB通道值爲零的黑色。

+0

僅供參考 - 數量中的「。」不是必需的。你可以做'128f/255'或者只做'128.0/255'。 – rmaddy

+0

有人指出這是一個重複的問題 - 抱歉。 (謝謝你的迴應!) – wayneh

+0

@rmaddy部分你是不對的:'128f/255'沒有被編譯(在Xcode使用的LLVM 5.1列表中)。 –

相關問題