2016-06-22 6 views
0

UINavigationControllerには3つのviewControllerがあります。私たちは、3つのViewControllerが共通のナビゲーションバーを共有していることを知っています。navigationBarを完全に透明に設定したい場合。私はviewWillAppearでコードを置くことができます。透明なUINavigationbarを表示すると、スクロールするときに黒いバーが表示されます。

[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
[self.navigationBar setShadowImage:[UIImage new]]; 
[self.navigationBar setBarTintColor:[UIColor clearColor]]; 
    self.navigationBar.translucent = YES; 

viewWillDisappearに戻ってそれを設定します。

[self setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 
[self setShadowImage:nil]; 
[self setBarTintColor:THEME_COLOR]; 
self.translucent = NO; 

を私はviewControllerBでUINavigationBar半透明を設定したいので、私はviewControllerBでコードを置きます。しかし、私はpopToViewController B、私は画面の右上に黒いバーが表示されます。 viewWillAppearが呼び出されているため。私の場合は解決できないようです。

私はいくつかの方法で出てくる:

  1. は異なるUINavigationBarを使用しています。
  2. 使用違うUINavigationController。しかし、UINavigationControllerは新しくプッシュできませんUINavigationController
  3. カスタムUIViewUINavigationBarです。

私はmethosの上に、より複雑だと思います。

任意のアイデアのおかげ!

+0

'ViewControllerB'と' ViewControllerC'のコードを入れてください –

+0

'viewWillAppear'が呼び出されたので、私の言うことを理解できません。私の場合は解決できないようです。あなたはそれを別に言い返すことができますか?そして、画面の右上に黒いバーの画像を追加できますか?あなたは画面上部全体にバーが表示されないことは奇妙に思えます。 – Palpatim

答えて

0

あなたが見る黒色は、メインウィンドウの背景色です。あなたはAppDelegate didFinishLaunchingWithOptionsメソッド(それは全くビューコントローラBのデザインに依存しています)からメインウィンドウに背景イメージや色を設定して、何の違いも見られないようにすることができます。

さも

は、単にあなたの代わりにviewWillAppearを使用してのviewDidAppearを使用することができますが、それはしかし少しフリックを持つことになります。

関連する問題