11

ナビゲーションバーにUIBarButtonItemがあります。矢印の形にしたいのですが。つまり、先のとがった面を除いて、正方形にしたいということです。誰かがこれを行う方法を知っていますか?

ありがとう!

4

6 に答える 6

17

私はこれについていくつかのアプローチに取り組み、最終的にいくつかの情報源からのすべての回答を使用してそれを理解しました。いくつかのトリックがあります。このスニペットはすべてを表示します(私はカスタムを作成していましたrightNavButtonが、これはどのようなものにも簡単に適応できますUIBarButtonItem):

// Produces a nice "right arrow" style button that mirrors the back arrow
// automatically added by the navController
//
UIImage *buttonImage = [UIImage imageNamed:@"forwardButton.png"];
UIButton *forwardButton = [UIButton buttonWithType:UIButtonTypeCustom];
[forwardButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[forwardButton setTitle:@"Meter" forState:UIControlStateNormal];
forwardButton.font = [UIFont boldSystemFontOfSize:12];
forwardButton.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);
[forwardButton addTarget:self action:@selector(showMeter) 
           forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
           initWithCustomView:forwardButton];

注:カスタムビューを割り当てた後、ボタンアイテムにターゲットとアクションを直接設定しようとするとUIButton、ボタン自体にターゲットとアクションを設定する必要がありnavBarます。ボタンは逐語的に提供されました。

これは私が不透明な黒で使用していた画像ですnavBar(もちろん、何でも使用できます): http: //raretiger.com/images/forwardbutton.png

于 2010-03-12T15:53:15.770 に答える
7

カスタム背景を作成します。方法については、UIToolbarでの左矢印ボタン(UINavigationBarの「戻る」スタイルなど)の作成を参照してください。


-pushNavigationItem:animated:カスタムアクションを割り当てることはできませんが、組み込みの戻るボタンを表示させることができます。


文書化されていないメソッドについては、

UIButton* backButton = [UIButton buttonWithType:101];

戻る「ボタン」を作成します。

于 2010-02-25T08:46:53.040 に答える
4

必要な画像を使用してUIImageViewまたはUIButtonを作成し、次を使用できます。

[[UIBarButtonItem alloc] initWithCustomView: arrowButton];

お役に立てれば。

于 2010-02-25T08:34:44.747 に答える
0

@Plamen Dragozovのアイデアを続けます。uibuttonをそのままにしておくと、タッチすると画像調整がトリガーされることに気付きました。これは、通常のナビゲーションの戻るボタンとはまったく逆です。だから私がしたのは「強調表示された画像を調整する」のチェックを外すことでした、そしてそれは魅力のように機能します。

これが私のような初心者に役立つことを願っています。

于 2011-05-27T18:47:19.660 に答える
0

よりエレガントなソリューション:

UIBarButtonItem * backButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStylePlain target:self action:@selector(back:)];
[backButtonItem setBackgroundImage:[UIImage imageNamed:@"back.png"]      forState:UIControlStateNormal     barMetrics:UIBarMetricsDefault];
self.navigationItem.leftBarButtonItem = backButtonItem;
于 2012-09-20T23:55:40.940 に答える
0

私の問題は、プッシュされたViewControllerに表示される戻るボタンの名前を変更することでした。汚い回避策を見つけました。理想的でないアニメーションの問題を無視すると、希望のタイトルの戻るボタンが表示されます。

秘訣は、最初のVCのタイトルを変更しviewWillDisappear、もちろんそれを再設定することです。viewWillAppear

(言うまでもなく、デフォルトでは、leftBarButtonItem設定がない場合UINavigationController、現在のVCをプッシュしたVCのタイトルが付いた戻るボタンが表示されます)

現在のVCをプッシュするVCで、

-(void) viewWillDisappear:(BOOL) animated {
  [super viewWillDisappear:animated];
  self.title = @"Back";
}

-(void) viewWillAppear:(BOOL) animated {
  [super viewWillAppear:animated];
  self.title = @"Original Title";
}
于 2013-03-06T10:40:00.530 に答える