0

UIBarButtonItems のタイトルの代わりに画像を使用しようとして、ひどい時間を過ごしています。UIBarButtonItem の画像を設定すると、UIBarButtonItem の正しいサイズに画像が自動的にスケーリングされることを理解していました。画像のサイズを変更する方法がないように見えるため、これは理にかなっています (imageView を設定したり、サブビューを追加したりすることはできません)。ただし、まったく同じサイズ (24x24) の 2 つの異なる画像を使用すると、異なる結果が得られます。

myAddButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)];
self.navigationItem.rightBarButtonItem = myAddButton;

myLeftButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"gear.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)];
self.navigationItem.leftBarButtonItem = myLeftButton;

次のことにつながります。

ここに画像の説明を入力

繰り返しますが、gear.png と plus.png は同じサイズで、24x24 です。これはPhotoshopで確認済みです。

まったく同じコード行を使用する場合は、ギアをプラスに置き換えてください。

myAddButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)];
self.navigationItem.rightBarButtonItem = myAddButton;

myLeftButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)];
self.navigationItem.leftBarButtonItem = myLeftButton;

私はこれを得る:

ここに画像の説明を入力

色の違いは、一方が有効になっていて、もう一方が有効になっていないためです。

UIBarButtonItem を使用して得られる背景が好きで、Photoshop で再作成したくないことを除いて、imageViews を使用してこれを自分で手動で設定できるように、それらを UIButtons にするだけです。

ここで何が起こっているのか、どうすれば修正できるのかについてのアイデアはありますか?

前もって感謝します。

編集:

以前に使用した 48x48 イメージからプルしていたため、ビルドをクリアしてシミュレーターからアプリを削除する必要があったため、この問題が発生したことがわかりました。

4

4 に答える 4

2

プロジェクトに適切な画像があることを確認してください。そして、ええ、時々プロジェクトをきれいにしてみてください。デバイス/シミュレーターからアプリを削除することも役立ちます。

于 2013-02-15T08:46:22.060 に答える
1

ボタンの作成に使用しているメソッドに誤ったスタイルを渡しています。

ここ:

[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)];

使用してinitWithImage:style:target:actionいますが、割り当てているスタイル値がUIBarButtonSystemItemAdd許容値の1つではありません。メソッドのドキュメントには、メソッドの1UIBarButtonItemStyleつがとして定義されている必要があると記載されています。代わりにこれらのいずれかを使用して、目的の効果が得られるかどうかを確認してください。

typedef enum {
   UIBarButtonItemStylePlain,
   UIBarButtonItemStyleBordered,
   UIBarButtonItemStyleDone,
} UIBarButtonItemStyle;
于 2013-02-15T08:44:59.623 に答える
0

これがあなたが試すことができるものです

UIButton *leftButton = [ UIButton buttonWithType:UIButtonTypeCustom];    
        [leftButton setFrame:CGRectMake(0,0,44,44)]; // set the frame according to the image size
        [leftButton setBackgroundImage:[UIImage imageNamed:@"plus.png"] forState:UIControlStateNormal];
        [leftButton addTarget:self action:@selector(myActionMethod:)    forControlEvents:UIControlEventTouchUpInside];

        myLeftButton = [[UIBarButtonItem alloc]initWithCustomView:leftButton];
      self.navigationItem.leftBarButtonItem = myLeftButton;
于 2013-02-15T08:45:27.707 に答える
0
self.navigationItem.leftBarButtonItem =[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)]autorelease];
于 2013-02-15T08:46:23.927 に答える