2011-09-13 9 views
0

Iveはプログラムで私のビューにボタンを追加しました。後でその背景色を変更したいと思います。ボタンはカスタムタイプです。次のコードは効果がありません。アクセスはプログラムによって作成されたUIbuttons:objective-c

for(UIView *v in [self.view subviews]){ 
     if ([v isKindOfClass:[UIButton class]]){ 
      //NSLog(@"View : %@", v); 
      [v setBackgroundColor:[UIColor redColor]]; 
     } 
    } 

お手数ですか?

+0

ボタンのフレームを設定しましたか? – ms83

答えて

0

言い換えれば、(UIButtonTypeRoundedRectを使用して)UIButtonの色を変更することはできません。背景色を変更しようとすると、ボタンが描画される矩形の色がかなり変化しています(これは通常はクリアです)。だから2つの方法があります。 UIButtonをサブクラス化して-drawRect:メソッドを上書きするか、異なるボタン状態の画像を作成します(これは問題ありません)。

あなたはIBのボタンを持つことができるすべての状態のための画像の設定をサポートしていないことがわかります背景画像を設定するためにIBを使用している場合ので、私はそうのようなコードの画像を設定することをお勧めします -

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal]; 
[button setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled]; 
[button setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected]; 
[button setBackgroundImage:[UIImage imageNamed:@"higligted.png"] forState:UIControlStateHighlighted]; 
[button setBackgroundImage:[UIImage imageNamed:@"highlighted+selected.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; 

最後の行は、選択された&強調表示された状態(IBが設定できない状態)のイメージを設定する方法を示しています。選択した状態が必要でない場合は、選択したイメージ(行4 & 6)は必要ありません。

関連する問題