0

以下のコード行を使用していますが、ボタン タイトルのタイトル テキストの色が緑色かどうかを確認するという、期待どおりの動作をしていないようです。ただし、コンパイル エラーが発生していないため、何かを実行している必要があります。

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

この種の比較を行う方法があるかどうか誰かが知っていますか? ありがとう。

4

7 に答える 7

2

を使用して試すことができます-

isEqual:

ただし、色の機種が違うと失敗する可能性があるので注意が必要です。

于 2012-04-27T05:06:24.530 に答える
1

2つの色を使ってそれらを実行します:

   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]];

次に、2つの文字列を比較しますか?少しやり過ぎかもしれませんが、上記のすべてがうまくいかない場合、これは最後の手段になる可能性があります。(isEqualが機能しない理由を理解することを強くお勧めします。

于 2012-04-27T06:12:29.213 に答える
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.,.");
  }

私は学んでいます、。、。、、。

于 2012-04-27T05:58:54.897 に答える
0

iOS 5以降でUIColorは、HSLおよびRGBカラーシステムのゲッターを提供するため、特定の2つの色のゲッターを比較するユーティリティ関数を作成できます…</ p>

または、2つの色のCIColorプロパティを比較してみましたか?

于 2012-04-27T05:46:16.433 に答える
0
[[yourfeild currentTitleColor] isEqual:[UIColor yourcurrentcolor]];

あなたはメモリアドレスを等しくしているだけですが、それらはまったく同じオブジェクトではないため、明らかに等しくありません。

于 2012-04-27T05:31:34.543 に答える
0

これを試して[[sfield1 currentTitleColor] isEqual: [UIColor greenColor]];

于 2012-04-27T05:08:34.727 に答える
0

isEqual メソッドを使用します。

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

今、あなたはちょうど同じオブジェクトではないので、明らかに等しくないメモリアドレスを等しくしています。

于 2012-04-27T05:07:20.093 に答える