0

カスタム イメージでナビゲーション バーのボタンを作成しようとしています。次のコードを実行すると、ボタンは本来の状態で表示されますが、その後ろに別の幅広のボタンが横に突き出ていることがわかります。その他のボタンを取り除くにはどうすればよいですか?

UIBarButtonItem *emailButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"emailBut"]
                                                                style:UIBarButtonSystemItemCompose
                                                               target:self 
                                                               action:@selector(emailSheet)];
self.navigationItem.rightBarButtonItem = emailButton;
4

2 に答える 2

1

うーん...UIBarButtonSystemItemComposeはシステム アイコンなので、おそらくその上にアイコンを重ねていると思います。代わりにUIBarButtonItemStylePlain(または他のスタイル) をstyle:引数に使用する必要があります。

編集:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(...)];
[button setBackgroundImage:someImage];
[button addTarget:self action:@selector(something:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
[self.navigationItem setRightBarButtonItem:barButtonItem];
于 2012-08-06T23:50:24.423 に答える
1

わかりました、何らかの理由で initWithImage は画像をデフォルトのボタンの中央に配置するだけです。iBlueが提案したように、修正はinitWithCustomViewでした。

もう 1 つ注意すべき点は、barBackButton ではカスタム ビューを使用できないため、独自の go back メソッドを使用して、backButton ではなく leftButton にする必要があったことです。Apple が将来的にこれをより簡単にしてくれることを願っています。

于 2012-08-08T09:17:05.227 に答える