3

サブクラス化UIButtonして、ボタンが強調表示されたときにタイトルの色を設定しようとしています。カスタムボタンもnibファイルにあります。

私はコードを持っています:

- (void)layoutSubviews 
{
    [super layoutSubviews];

    self.titleLabel.textColor = [UIColor blueColor];
    [self setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; // Offending line

}

ただし、線がある場合、ビューはロードされません(無限ループに入って表示されないようです)setTitleColor:forState:。他の場所で宣言されることになっていますか?カスタムの強調表示されたタイトルの色を他にどのように設定しますUIButtonか?

4

2 に答える 2

6

layoutSubviewsでこれを実行する場合は、現在作成している無限ループを回避できます。

- (void)layoutSubviews
{
    [super layoutSubviews];

    if (self.state == UIControlStateHighlighted) {
        self.titleLabel.textColor = [UIColor redColor];
    } else {
        self.titleLabel.textColor = [UIColor blueColor];
    }
}
于 2012-08-06T05:05:27.213 に答える
3

UIButtonサブクラスで他に何かしていることはありますか?テキストの色を変更するだけの場合は、標準のUIButton機能を使用できます。

[button setTitleColor:[UIColor redColor] forControlState:UIControlStateHighlighted];
[button setTitleColor:[UIColor whiteColor] forControlState:UIControlStateNormal];

ボタンを設定するときにこれを行います。layoutSubviewsが呼び出されるたびに発生する必要はありません。

于 2012-08-06T11:51:13.463 に答える