白い矢印の画像を使用してUINavigationBarのleftBarButtonItemを設定しますが、青色で表示されます

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をカスタマイズしてみてください。

おすすめ

転載: blog.csdn.net/jhq1990/article/details/51734228