11

これは、iOS 6 から変換しているアプリにあります。当初、ViewController は iOS 7 の下に表示され、ナビゲーション バーの下にメイン ビューのコンテンツが表示されていました。

この問題を解決するために、UI ビルダー ビューで、[エッジの拡張] セクションの [トップ バーの下] と [ボトム バーの下] をオフにしました。これは機能しましたが、この画面ではナビゲーション バーが半透明に見えます (下のスクリーンショットでは灰色になっています)。

「Simulated Metrics」の下で「Top Bar」を「Opaque Navigation Bar」に明示的に設定しようとしましたが、これは効果がありません。

私は設定しようとしました:

self.navigationController.navigationBar.translucent = NO;

私のViewControllerのinitコードで、これも効果がありません。

私は何が欠けていますか?

更新:self.navigationController.navigationBar.translucent = NO;スタック内の最初の ViewController に設定すると、機能します。ただし、問題の ViewController の前に、半透明のナビゲーション バー必要です。半透明でないバーが必要なのは、数層の深さのビューに到達したときだけです (このビューにはスクロール可能なデータがないため、半透明にする意味がありません)。

これは、ナビゲーション バーに表示されているもののスクリーンショットです。

バーを白く不透明にする試みは、iOS 7 でこれまでのところ失敗しています...

4

4 に答える 4

20

問題は、私が電話していたことでした

self.navigationController.navigationBar.translucent = NO;

私の見解が現れた後。そのコードを viewWillAppear メソッドに移動したところ、正しく表示されるようになりました。

正しい

于 2013-09-25T04:14:41.450 に答える
5

以下のコードを試すことができます...

self.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.navigationController.navigationBar.translucent = NO;  

View viewDidLayoutSubviews 関数にこのコードを追加します...

于 2013-09-25T05:56:57.407 に答える
5

これを使用して、アプリで全面的に設定できます。

UINavigationBar.appearance().navigationBarAppearace.translucent = false

アプリが最初に読み込まれるときに、AppDelegate クラスで行う傾向があります。

于 2015-06-21T10:19:18.147 に答える
1

iOS6 で行う必要があるのは、コントローラーの fullscreenlayout を NO に設定してから、NavigationController にプッシュすることだけです。

[controller setWantsFullScreenLayout:NO];
于 2013-09-25T05:37:14.963 に答える