ストーリーボードで、View Controllerで、ステータスバーの下にナビゲーションバーを追加して実行しようとしました。ナビゲーションバーは透明で、ナビゲーションバーのようにぼやけているはずのラベルが表示されます。
しかし、同じビューコントローラーをナビゲーションビューコントローラーに埋め込んだ場合、背景画像の下がぼやける可能性があります。これが私の意図です。
これらの双方向の異なる結果は何ですか?ステータスバーをぼかすために最初の方法で何をする必要がありますか?
ありがとう!
IOS 7では、ステータスバーはデフォルトで透明です。ナビゲーションバーもあるときに表示されるぼかしは、実際にはナビゲーションバーによって作成されます。したがって、ナビゲーションバーなしで探している効果を作成するには、ステータスバーの下にぼかし効果を生成するビューを配置する必要があります。
参考までに、次のフレームを使用してビューを追加してください。
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
私はこれが古いことを知っています、参考のために、私はself.navigationController.navigationBar.clipToBounds = NO
を設定することによってこれを解決しました
これは完全にはテストしていませんが、plistファイルに移動して、次の設定を確認してください。
「ViewControllerベースのステータスバーの外観」:これが「Yes」に設定されている場合、各ViewControllerに固有のステータスバーが表示されます。これが必要な場合があります。
「ステータスバースタイル」:これは、不透明な黒、灰色、透明な黒の3つの異なるスタイルに設定できます。
これがうまくいったかどうか教えてください。
UINavigationControllerは、かなり奇妙で文書化されていない一連の制約に応じて、UINavigationBarの高さを44ポイントまたは64ポイントに変更します。 UINavigationControllerは、ビューのフレームの上部がUIWindowの上部と視覚的に隣接していることを検出すると、64ポイントの高さでナビゲーションバーを描画します。ビューの上部がUIWindowの上部と隣接していない場合(1ポイントだけずれている場合でも)、ナビゲーションバーを「従来の」方法で44ポイントの高さで描画します。このロジックは、アプリケーションのView Controller階層内の複数の子である場合でも、UINavigationControllerによって実行されます。この動作を防ぐ方法はありません。
最初の例では、ポイント(0,20)からビュー階層を配置しているようです。また、それはUIToolbarですか、それともUINavigationBarですか?後者の場合、なぜそれを単独で使用し、UINavigationController内で使用しないのですか?
UINavigationControllerを使用せず、代わりにカスタムView Controllerコンテナーを使用している場合は、それに応じてビューを配置する必要があります。
詳細な説明については、 この回答 を参照してください。
ビューコントローラーをナビゲーションビューコントローラーに埋め込むと、同じビューコントローラーからプッシュしているすべてのビューコントローラーへのナビゲーションバーが表示されます。最初のケースでは、ナビゲーションバーオブジェクトを追加します。ストーリーボードからビューコントローラーを選択し、属性インスペクタータブに移動し、選択したトップバーから半透明のナビゲーションバーとして選択できます。