207

コードで UIButton の画像をどのように設定しますか?

私はこれを持っています:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
btnTwo.frame = CGRectMake(40, 140, 240, 30);
[btnTwo setTitle:@"vc2:v1" forState:UIControlStateNormal];
[btnTwo addTarget:self action:@selector(goToOne) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnTwo];

しかし、何がそのイメージを設定するのかわかりません。

4

12 に答える 12

420

Objective-C

UIImage *btnImage = [UIImage imageNamed:@"image.png"];
[btnTwo setImage:btnImage forState:UIControlStateNormal];

スイフト5.1

let btnImage = UIImage(named: "image")
btnTwo.setImage(btnImage , for: .normal)
于 2009-09-24T02:16:33.233 に答える
58

マイクのソリューションは画像を表示するだけですが、タイトルまたは画像を設定できるため、ボタンに設定されたタイトルは表示されません。

両方 (画像とタイトル) を設定する場合は、次のコードを使用します。

btnImage = [UIImage imageNamed:@"image.png"];
[btnTwo setBackgroundImage:btnImage forState:UIControlStateNormal];
[btnTwo setTitle:@"Title" forState:UIControlStateNormal];
于 2010-06-09T11:59:55.747 に答える
22

これが機能する前に、画像のフレームサイズに基づいてボタンフレームのサイズを明示的に変更する必要がありました。

UIImage *listImage = [UIImage imageNamed:@"list_icon.png"];
UIButton *listButton = [UIButton buttonWithType:UIButtonTypeCustom];

// get the image size and apply it to the button frame
CGRect listButtonFrame = listButton.frame;
listButtonFrame.size = listImage.size;
listButton.frame = listButtonFrame;

[listButton setImage:listImage forState:UIControlStateNormal];
[listButton addTarget:self.navigationController.parentViewController 
               action:@selector(revealToggle:) 
     forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *jobsButton = 
  [[UIBarButtonItem alloc] initWithCustomView:listButton];

self.navigationItem.leftBarButtonItem = jobsButton;
于 2012-10-19T17:24:24.257 に答える
10

あなたはこのようにすることができます

[btnTwo setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
于 2012-11-07T10:33:55.647 に答える
9

次のいずれかの方法で画像を配置できます。

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
btnTwo.frame = CGRectMake(40, 140, 240, 30);
[btnTwo setTitle:@"vc2:v1" forState:UIControlStateNormal];
[btnTwo addTarget:self 
           action:@selector(goToOne) 
 forControlEvents:UIControlEventTouchUpInside];


[btnTwo setImage:[UIImage imageNamed:@"name.png"] forState:UIControlStateNormal];

//OR setting as background image

[btnTwo setBackgroundImage:[UIImage imageNamed:@"name.png"] 
                  forState:UIControlStateNormal];

[self.view addSubview:btnTwo];
于 2010-12-09T03:54:18.043 に答える
3

に を追加するソリューションを探していましUIImageUIButton。問題は、画像が必要以上に大きく表示されることだけでした。これで私を助けました:

_imageViewBackground = [[UIImageView alloc] initWithFrame:rectImageView];
_imageViewBackground.image = [UIImage imageNamed:@"gradientBackgroundPlain"];
[self addSubview:_imageViewBackground];
[self insertSubview:_imageViewBackground belowSubview:self.label];
_imageViewBackground.hidden = YES;

表示するたびに、変数をorUIImageViewに設定するだけです。他の解決策があるかもしれませんが、私はこのことで何度も混乱し、これで解決され、バックグラウンドで実行されている内部的なものに対処する必要はありませんでした.hiddenYESNOUIButton

于 2015-06-15T14:32:18.733 に答える