173

iOS 6 SDK では、ボタン内に画像を表示するために次のコード行を書きました。

NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"];
NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2];
UIImage *thumb2 = [UIImage imageWithData:thumbData2];
[btn2 setImage:thumb2 forState:UIControlStateNormal];
[self.view addSubview:btn2];

しかし、Xcode 5 と iOS 7 ではこれが機能しません。ボタンには画像が含まれていません。ボタンは青色で塗りつぶされています。

4

15 に答える 15

54

iOS 7 は、提供された画像を、ボタンの色合いを表示するためのアルファ マスクとして使用しているようです。ボタンのタイプを変更すると、UIButtonTypeCustomうまくいきました(user716216に感謝します!)。私の場合のように、背景画像が既にある場合、画像を背景として設定しても常に機能するとは限りません。

于 2014-01-23T16:03:12.040 に答える
39

スウィフト 3、4、5 :

let image = UIImage(named: "my-image")
myButton.setImage(image.withRenderingMode(.alwaysOriginal), for: .normal)
于 2017-02-28T14:42:24.550 に答える
24

画像がそこにあり、それを見ることができない可能性は十分にあります。ボタンのタイプを に変更してみてくださいUIButtonTypeCustom。それが機能しない場合は、ボタンの背景色を[UIColor clearColor];

于 2013-08-08T18:44:12.693 に答える
11

迅速な場合:

    let aButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
于 2014-11-11T13:49:51.577 に答える
9

問題は TintColor です。デフォルトでは、iOS はすべてのボタンに青色の色合いをスローします。3 つの方法で回避できます。

  1. ティントカラーを変更します。[button setTintColor:[UIColor blackColor]]; これにより、イメージに望ましくない色が付く場合があります。

  2. 他のほとんどの人が提案したように、背景画像を設定します。[button setBackgroundImage:[UIImage...]];

  3. ボタンに UIImageView を追加します。

UIImageView * img = [[UIImageView alloc] initWithImage:[UIImage...]];

[button addSubView:img];

于 2013-11-21T16:33:31.003 に答える
6

同じ問題がありました。私のストーリーボードには、画像のないボタンがありました。

次に、コードで画像を割り当てます。

IOS 7 が来て、青い画像がたくさん出てきました。

解決策は単純ですが、混乱を招きました。ストーリーボードに画像を割り当てて、実行時に画像を変更すると、正常に動作します。

使用しない場合でも、ストーリーボードで常に開始イメージを指定する必要があります。

于 2013-09-23T07:56:13.613 に答える
3

古いスレッドですが、同じ問題を抱えていたので、参加したかったのです。問題は、setBackgroundImage を呼び出す必要があるときに setImage を呼び出していることだけです。

于 2018-01-05T20:45:33.493 に答える
3

これは私のために働いた

[myButton1 setBackgroundImage:[UIImage imageNamed:@"phones.png"] forState:UIControlStateNormal];

注: これを行う前に、正面の画像を削除してください。

于 2013-12-09T12:41:32.407 に答える
1

この問題は、xcode ではボタンの青色の問題と呼ばれています。コードでボタンを作成すると、ボタンはデフォルトで青色の色合いを示します。これは、セルの色に応じて色合いの色を黒または白に割り当てることで解決できます。コードは次のとおりです。

UIImage *closebtnimg = [UIImage imageNamed:@"icon_uncheck.png"];
 UIImage *closebtnimg1 = [UIImage imageNamed:@"icon_checked.png"];

Custombutton *button = [Custombutton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(52, 66, 25, 24)];
[button setBackgroundImage:closebtnimg forState:UIControlStateNormal];
[button setBackgroundImage:closebtnimg1 forState:UIControlStateSelected];
[button setTintColor:[UIColor whiteColor]];
[cell.contentView addSubview:button];
[button addTarget:self action:@selector(changeImage:)  forControlEvents:UIControlEventTouchUpInside];
于 2014-09-05T10:43:07.727 に答える
0

4つの状態すべて(デフォルト、ハイライト、選択、無効)の色合いをクリアカラーにすることでうまくいきました。

于 2015-10-23T07:19:59.953 に答える