web-dev-qa-db-ja.com

半透明の黒UINavigationBarの色を変更する

私は何度もこれに出くわしましたが、解決策は見つかりませんでした。 UINavigationControllerのnavigationBarは、次のように黒の半透明に設定できます。

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;

また、UINavigationBarには半透明のプロパティがあります、とドキュメントは言います:

YESの場合、バーのスタイルに関係なく、ナビゲーションバーは部分的な不透明度で描画されます。不透明度の量は固定されており、変更できません。 Navigation BarがNavigation Controllerオブジェクトによって管理されている場合、このプロパティの値を設定できます。

私は試した

self.navigationcontroller.navigationBar.tintColor=[UIColor blueColor];
self.navigationcontroller.navigationBar.translucent=YES;

そして数千のバリエーション:半透明プロパティを最初に設定し、AppDelegateとViewControllerで設定し、最初にバースタイルを設定します。結果は常に同じです:透明度なししたがって、私の質問:

半透明のUINavigationBarの色を黒とは異なるものに変更することは本当に可能ですか(できればUINavigationController内)?.

レビューに安全なソリューションがあることを願っています。

ありがとう、m

34
marimba

それを知ったら、それはかなり簡単です:

self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.navigationController.navigationBar.alpha = 0.7f;
self.navigationController.navigationBar.translucent = YES;

translucentプロパティは、メインビューがナビゲーションバーの下に表示されるかどうかを決定するように思われ、ビューのサイズを適切に変更します。

50
marimba

半透明効果をより正確に模倣するには、ナビゲーションバーの背景のみが半透明で、ボタン、タイトル、その他すべてが不透明であることを意味します。次のようにできます。

self.navigationController.navigationBar.translucent = YES;
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f];
17
Nicu Surdu

少なくともiPhone 4S上のiOS 6では、次のような色付きの半透明のナビゲーションバーを作成できます。

self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.navigationController.navigationBar.translucent = YES;

アルファ設定はもう必要ないようです。これにより、タイトルが明るい白になり、ボタンが不透明になります。

4
Laura

解決策は次のとおりです。

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:3.f/255.f green:8.f/255.f blue:61.f/255.f alpha:1]];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.barTintColor = [UINavigationBar appearance].barTintColor;
0
Maksim Usenko