言い換えれば、(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)は必要ありません。
ボタンのフレームを設定しましたか? – ms83