5

UIButton の背景色の変更に関するもう 1 つの単純な問題。そのため、少し検索した後、一般的な方法は画像またはサブビューを作成することであることがわかりました。

ストーリーボードにボタンを作成し、アウトレットに接続しました。私のVCクラスには次のものがあります

.h

@property (nonatomic, readwrite, strong) IBOutlet UIButton *uiLoginButton;

.m

- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"%s and frame rect %@", __PRETTY_FUNCTION__, self.uiLoginButton); //here uiloginbutton does not have any size!

CGRect buttonRect = CGRectMake(50, 50, 100.0, 100.0);

self.uiLoginButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.uiLoginButton.frame = buttonRect;
self.uiLoginButton.backgroundColor = [UIColor redColor];
NSLog(@"%s and frame rect %@", __PRETTY_FUNCTION__, self.uiLoginButton);    
}

いいえ、IBOutlet ボタンのフレームが 0 であるため、CGRectMake の値をランダムに設定しました。

ボタンの色を実際に変更する正しい方法は何ですか?

4

3 に答える 3

14

nib でボタンを作成している場合は、nib 自体を介してすべてのプロパティを変更できます。このような ここに画像の説明を入力

また

ペンポイントを介して追加しているため、コードごとに実行したい場合は注意してください

  • IB のプロパティであるため、初期化は必要ありません。
  • -setFrame:IBを介して、またはメソッドを介してコードでフレームを直接提供するだけです
  • 色を設定するには、-setBackgroundcolor:メソッドを使用できます

だから私の.h

@property (nonatomic,strong) IBOutlet UIButton *uiLoginButton;

.m

[self.uiLoginButton setFrame:buttonRect];
[self.uiLoginButton setBackgroundColor:[UIColor redColor]];
于 2013-03-16T22:16:47.227 に答える
1

理解するために参照先のすべてのメソッドをテストする必要があります: https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html

storyBoard に UIButton を描画すると、view に NSLog フレームが表示されます。

RounRect 型を使用していて、色を変更したい場合は、コードを使用せずにストーリーボードを使用してください。

カスタム タイプを使用する場合は、色を設定せずに画像の背景を使用します。

[ボタン setBackgroundImage:(UIImage *) forState:UIControlStateNormal];

于 2013-03-16T22:10:05.253 に答える
0

あなたはの値をオーバーライドしていますself.uiLoginButton

これらの行を削除します

CGRect buttonRect = CGRectMake(50, 50, 100.0, 100.0);

self.uiLoginButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.uiLoginButton.frame = buttonRect;
于 2013-03-16T21:59:00.523 に答える