web-dev-qa-db-ja.com

iOS7ステータスバーが透明

ストーリーボードで、View Controllerで、ステータスバーの下にナビゲーションバーを追加して実行しようとしました。ナビゲーションバーは透明で、ナビゲーションバーのようにぼやけているはずのラベルが表示されます。

enter image description here

しかし、同じビューコントローラーをナビゲーションビューコントローラーに埋め込んだ場合、背景画像の下がぼやける可能性があります。これが私の意図です。

enter image description here

これらの双方向の異なる結果は何ですか?ステータスバーをぼかすために最初の方法で何をする必要がありますか?

ありがとう!

14
S1U

IOS 7では、ステータスバーはデフォルトで透明です。ナビゲーションバーもあるときに表示されるぼかしは、実際にはナビゲーションバーによって作成されます。したがって、ナビゲーションバーなしで探している効果を作成するには、ステータスバーの下にぼかし効果を生成するビューを配置する必要があります。

参考までに、次のフレームを使用してビューを追加してください。

CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
4
Matt Hall

私はこれが古いことを知っています、参考のために、私はself.navigationController.navigationBar.clipToBounds = NOを設定することによってこれを解決しました

3
AuA

これは完全にはテストしていませんが、plistファイルに移動して、次の設定を確認してください。

「ViewControllerベースのステータスバーの外観」:これが「Yes」に設定されている場合、各ViewControllerに固有のステータスバーが表示されます。これが必要な場合があります。

「ステータスバースタイル」:これは、不透明な黒、灰色、透明な黒の3つの異なるスタイルに設定できます。

これがうまくいったかどうか教えてください。

2
w3bshark

UINavigationControllerは、かなり奇妙で文書化されていない一連の制約に応じて、UINavigationBarの高さを44ポイントまたは64ポイントに変更します。 UINavigationControllerは、ビューのフレームの上部がUIWindowの上部と視覚的に隣接していることを検出すると、64ポイントの高さでナビゲーションバーを描画します。ビューの上部がUIWindowの上部と隣接していない場合(1ポイントだけずれている場合でも)、ナビゲーションバーを「従来の」方法で44ポイントの高さで描画します。このロジックは、アプリケーションのView Controller階層内の複数の子である場合でも、UINavigationControllerによって実行されます。この動作を防ぐ方法はありません。

最初の例では、ポイント(0,20)からビュー階層を配置しているようです。また、それはUIToolbarですか、それともUINavigationBarですか?後者の場合、なぜそれを単独で使用し、UINavigationController内で使用しないのですか?

UINavigationControllerを使用せず、代わりにカスタムView Controllerコンテナーを使用している場合は、それに応じてビューを配置する必要があります。

詳細な説明については、 この回答 を参照してください。

1
jaredsinclair

ビューコントローラーをナビゲーションビューコントローラーに埋め込むと、同じビューコントローラーからプッシュしているすべてのビューコントローラーへのナビゲーションバーが表示されます。最初のケースでは、ナビゲーションバーオブジェクトを追加します。ストーリーボードからビューコントローラーを選択し、属性インスペクタータブに移動し、選択したトップバーから半透明のナビゲーションバーとして選択できます。 enter image description here

0
swapnali patil