2012-04-27 71 views
0

我正在使用下面的代碼行,但它似乎沒有做我期待的,這是要查明是否標題文本顏色的按鈕標題是綠色的。但是,我沒有收到編譯錯誤,所以它必須做些什麼:我可以比較按鈕的文字顏色嗎?

if ([sfield1 currentTitleColor] != [UIColor greenColor]) 

有人知道是否有辦法做這種比較嗎?謝謝。

回答

2

您可以嘗試使用 -

isEqual: 

但是,你需要在使用它,如果有顏色模型的差異要小心,那麼它可能會失敗。

+0

謝謝,但那也行不通 – reid55 2012-04-27 05:31:26

+0

@ reid55你有沒有試過這種否定? – rishi 2012-04-27 05:32:59

+0

我不確定我明白你的意思因爲我不想等於綠色,所以我試着什麼都不做,當它等於綠色,並把我的操作邏輯放在else子句中時 – reid55 2012-04-27 05:58:00

0

使用方法的isEqual:

if ([[sfield1 currentTitleColor] isEqual: [UIColor greenColor]]) 

現在你只等於內存地址,也就是,顯然是不相等的,因爲它們不是完全相同的對象。

+0

謝謝,但也沒有工作。 – reid55 2012-04-27 05:32:16

+0

原來這種方法確實有效。它不適合我,因爲我在點擊按鈕後檢查顏色,並且該操作會更改文本的顏色。 – reid55 2012-04-29 07:39:05

0

試試這個[[sfield1 currentTitleColor] isEqual: [UIColor greenColor]];

+0

謝謝,但也沒有工作。 – reid55 2012-04-27 05:31:45

+0

原來這種方法確實有效。它不適合我,因爲我在點擊按鈕後檢查顏色,並且該操作會更改文本的顏色。 – reid55 2012-04-29 07:39:41

0
[[yourfeild currentTitleColor] isEqual:[UIColor yourcurrentcolor]]; 

你只是等於內存地址,也就是,顯然是不相等的,因爲它們不是完全相同的對象。

+0

這與@verhage發佈的答案非常相似。請確保你不提供重複的答案。如果你有相同的答案,只需投票相似的答案,而不是重新發布它。 – visakh7 2012-04-27 06:19:20

+0

好吧,我是新用戶。它不會再重複。 – 2012-04-27 06:21:51

0

在iOS 5中&後,UIColor提供干將爲HSL和RGB colorsystems,所以你可以只寫一個比較那些兩個給定顏色的效用函數...

或者,你嘗試過比較的CIColor性質兩種顏色?

1

試試這個可能工作。,。,。

but=[[UIButton alloc]init]; 
[but setTitle:@"nice" forState:UIControlStateNormal]; 
[but setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 
[but setFrame:CGRectMake(100, 450, 40, 20)]; 
[self.view addSubview:but]; 

if (but.titleLabel.textColor==[UIColor blueColor]) 
    { 
    NSLog(@"nothing., it is very easy.,."); 
    } 

我正在學習,。,。,,。

+0

謝謝。這種方法也行得通。 – reid55 2012-04-29 07:37:36

1

採取兩種顏色運行它們通過:

UIColor *color = value; 
    const CGFloat *components = CGColorGetComponents(color.CGColor); 
    NSString *colorAsString = [NSString stringWithFormat:@"%f,%f,%f,%f", components[0], components[1], components[2], components[3]]; 

兩個字符串然後比較? 也許有點矯枉過正,但如果以上所有都不起作用,這可能是最後的手段。 (我強烈建議試圖弄清楚爲什麼isEqual不能正常工作