以下のコード行を使用していますが、ボタン タイトルのタイトル テキストの色が緑色かどうかを確認するという、期待どおりの動作をしていないようです。ただし、コンパイル エラーが発生していないため、何かを実行している必要があります。
if ([sfield1 currentTitleColor] != [UIColor greenColor])
この種の比較を行う方法があるかどうか誰かが知っていますか? ありがとう。
を使用して試すことができます-
isEqual:
ただし、色の機種が違うと失敗する可能性があるので注意が必要です。
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が機能しない理由を理解することを強くお勧めします。
これを試してみてください。
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.,.");
}
私は学んでいます、。、。、、。
iOS 5以降でUIColor
は、HSLおよびRGBカラーシステムのゲッターを提供するため、特定の2つの色のゲッターを比較するユーティリティ関数を作成できます…</ p>
または、2つの色のCIColorプロパティを比較してみましたか?
[[yourfeild currentTitleColor] isEqual:[UIColor yourcurrentcolor]];
あなたはメモリアドレスを等しくしているだけですが、それらはまったく同じオブジェクトではないため、明らかに等しくありません。
これを試して[[sfield1 currentTitleColor] isEqual: [UIColor greenColor]];
isEqual メソッドを使用します。
if ([[sfield1 currentTitleColor] isEqual: [UIColor greenColor]])
今、あなたはちょうど同じオブジェクトではないので、明らかに等しくないメモリアドレスを等しくしています。