iOS6で発生したと思われるナビゲーションバーの位置の問題があります。
これは、一部のユーザーが一部のビューを回転するときに経験する問題と同様に多くの方法で機能します
アプリにはスプラッシュ画面があり、全画面表示されます(に設定Hide statusbar during application launch
すると達成されますTrue
)
次にviewDidLoad
、マスタービューコントローラーで、次の行にステータスバーをアプリに追加します。
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
これにより、StatusBarがアプリに追加され、期待どおりにビューが20ポイント下にシフトします。ただし、NavigationBarは、ステータスバーの下に配置されたままで、20ポイントのグリッチが下にあります。
iOS6以前は、次のコード行を追加してこれを修正していました。
[UIApplication sharedApplication].keyWindow.frame=CGRectMake(0, 20, 320, [[UIScreen mainScreen] bounds].size.height-20);
ただし、これは機能しません。
いくつかの調査によると、呼び出しの時点でviewDidLoad
、keyWindow.frame
は{0,0}のサイズと起源の両方を持っており、それを変更しても効果がないことが示されています。
上記の2行を挿入するviewDidAppear
と、アプリの起動時に同じ動作が発生します。ただし、別のビューに移動して最初のビューに戻ると、の変更によってkeyWindow.frame
目的の効果が得られ、NavigationBarが本来あるべき位置に配置されます。
私の質問:StatusBarが最初に非表示になっているときにiOSアプリにStatusBarを追加した後、NavigationBarを正しい位置に配置するにはどうすればよいですか?