1.問題の説明
1.1。動作環境
Xcodeバージョン:7.3.1
シミュレータバージョン:8.4&9.3
1.2。背景
あるプロジェクトでは、ナビゲーションバーの背景色は青で、ナビゲーションバーの戻るボタンは白です。次に、製品化により、青いrgb値と白い戻るボタンのカット画像が提供されます。
ナビゲーションバーの背景色を直接設定すると半透明効果があるため、単色の画像を作成し、ナビゲーションバーの背景画像を設定します。
[self.navigationController.navigationBar setBackgroundImage:colorImage forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
colorImageは単色の画像です。
1.3。問題
しかし、それを実行した後、戻るボタンの画像は明らかに白いことがわかりましたが、それは確かに青いものでした。
2.解決策
2.1。アイデア
まず、画像の名前を変更することにより、同じ名前のリソースファイルが存在する可能性が排除されます。
次に、ナビゲーションバーの背景色を変更すると、戻るボタンの色がナビゲーションバーの背景色に応じて変化することがわかりました。
最後に、コードを見てナビゲーションボタンを追加します。
UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"GDNavBar_Back"] style:UIBarButtonItemStylePlain target:self action:@selector(didBackButton)];
ここに読み込まれる画像は、タイトルに似た前景画像を使用しています。タイトルと同様に、UIBarButtonItemのタイトルは表示時に透明効果があるため、前景画像にも透明効果がある場合があります。
ただし、UIBarButtonItemにはbackgroundImageプロパティがないため、customViewを介してのみ表示できます。
UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 45, 40);
[btn setImage:[UIImage imageNamed:@"GDNavBar_Back"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(backToPrev) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
この方法を使用した後、画像に戻って通常どおり表示します。
2.2結論
customViewプロパティUIBarButtonItemカスタムボタンの使用。
3.理由
上記のように、customViewを使用してUIBarButtonItemをカスタマイズしてみてください。