2011-02-04 16 views
1

複数のラベルを持つカスタムボタンを作成しています。ハイライト/通常のUIControlStatesのラベルのテキストの色を変更できるようにしたい。私はコントロールの状態に基づいてタイトルテキストの色を変更する可能性を知っていますが、私はボタン内のカスタムラベルのためにそれを把握することはできません。何か案は?複数のラベルを持つカスタムUIButtonのラベルの色を変更します。

+0

私は@リッチの助けを借りて使用するコードは、別の答えに以下の通りです。 – lavoy

答えて

0

これはちょっと複雑ですが、これについてはiOS 4の高度な開発と言われる本があります。基本的には、setHighlightedメソッドをスワップするためにランタイムを使用する必要があります。

編集:それはtableviewcellsのために技術的にですが、あなたは、このようなsendActionとして継承されたUIControlメソッドの一部(使用するようにそのテーブルビューの下thisに白く

+0

UIButtonsにはインスタンス変数とメソッドが異なるため、少し変更する必要があることに注意してください。カスタムラベルとsetHighlightedに簡単にタグを付けるには、そのタグを持つビュー上でallを白に変えます。 – Rich

1

がサウンド:へ:forEventは:)これはよりもさらに細かい制御を提供していますUIButtonを使用します。

2

@Richというアイデアをありがとう。私はUIButtonをサブクラス化し、このクラスを新しいクラスに入れました。

相続人は、私が使用したコード:

- (void)setHighlighted:(BOOL)bHighlighted 
{ 
    [super setHighlighted:bHighlighted]; 

    if (bHighlighted) { 
     [label1 setTextColor:[UIColor whiteColor]]; 
     [label2 setTextColor:[UIColor whiteColor]]; 
    }else { 
     [label1 setTextColor:[UIColor blackColor]]; 
     [label2 setTextColor:[UIColor blackColor]]; 
    } 
} 
+0

素晴らしい!それは動作しますか? – Rich

+0

通常、uibuttonをサブクラス化することは、クラスクラスタであるという本当の痛みです。 init'ing後にボタンをnslogすれば、UIRoundedRectButtonのようになりますので、サブクラス化すればそのメソッドの束を実装する必要があります。カスタムスタイルボタン([UIButton buttonWithType:UIButtonTypeCustom];)をコピーすることで動的にサブクラス化する方が簡単かもしれません。classこのコードは次のとおりです:http://davedelong.com/blog/2010/10/07/fun -objective-c-dynamic-subclassing – Rich

+0

それはうまくいった。私はカスタムタイプのボタンを使用しているだけなので、init関数では[MyCustomButton buttonWithType:UIButtonTypeCustom]を呼び出します。 – lavoy

関連する問題