10

-[UIBarButtonItem initWithImage:style:target:selector:] を使用してバー ボタン アイテムを作成すると、ナビゲーション アイテムのバック バー ボタン アイテムに色合いを適用する際に問題が発生します。

画像をビュー コントローラーのバック コンテキストとして使用しても問題ありませんか? HIGや、これが非推奨または推奨されていない場所で、兆候を見つけることができないようです。

これが私のコードです:

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"camera-navigation_item_back"]
                                                                  style:UIBarButtonItemStyleBordered
                                                                 target:nil
                                                                 action:nil];
[navItem setBackBarButtonItem:barButtonItem];

iOS 7 結果:

iOS7

iOS 6 結果:

iOS6


編集:システム項目の 1 つ (プラス記号、ゴミ箱など) を戻るボタンとして使用しようとすると、Apple はタイトルの「戻る」をイメージに置き換えます。これは、実際には iOS 6 と 7 で同じ動作です。

4

2 に答える 2

11

画像のレンダリング モードを次のように設定しますUIImageReneringModeAlwaysTemplate(このトピックは、前の回答で言及された WWDC ビデオの 33:00 頃に取り上げられています)。

UIImage *backButtonImage = [UIImage imageNamed:@"imageName.png"];
backButtonImage = [backButtonImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIBarButtonItem * backButton = [[UIBarButtonItem alloc]
                               initWithImage:backButtonImage
                               style:UIBarButtonItemStylePlain
                               target:nil
                               action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];
[[[self navigationItem] backBarButtonItem] setTintColor:[UIColor redColor]];

tintColorでグローバルに設定した場合、最後の行は必要ありませんAppDelegate.h

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];
于 2013-09-29T00:31:38.370 に答える
3

WWDC ビデオ: iOS 7 向けのアプリの外観のカスタマイズ (セッション 214、WWDC 2013) をご覧ください。

ここで多くのことが変わりました。たとえば、UIBarButton画像用の新しい API があります。

@property(nonatomic,retain) UIImage *backIndicatorImage;
@property(nonatomic,retain) UIImage *backIndicatorTransitionMaskImage;

(マスク イメージは、View Controller ポップ遷移中に戻るボタン イメージの下にバー タイトルがスライドするときに、バー タイトルが切り取られる場所を決定します。これを設定する必要があります。設定されていない場合、設定した backIndicatorImage は無視されます。)

しかし、実際には、ビデオを見てください (私が言及している部分は 14:00 から 16:00 あたりのどこかですが、ビデオ全体が興味深いです)。

于 2013-09-26T19:43:23.233 に答える