NavigationBar と Status Bar (スライドアップ アニメーション) を非表示にしようとしていますが、問題が発生しています。
ステータスバーが表示されている場合、0 ポイント (x: 0) にあるすべての要素の原点は、ステータスバーの真下を意味します。ただし、ステータスバーが非表示の場合、0 (x: 0) ポイントは新しいスペースに対応するように更新され、0 (x: 0) は画面の絶対上部を意味します。
ステータス バーを非表示にして横向きに回転すると、ビューが自動サイズ変更され、すべてがステータス バーのスペースを使用するようにシフトされ、アニメーションが中断されます。
if (![[UIApplication sharedApplication] isStatusBarHidden]) {
// Change to fullscreen mode
// Hide status bar and navigation bar
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationSlide];
[UIView animateWithDuration:animationDuration animations:^{
navBar.frame = CGRectMake(navBar.frame.origin.x,
-navBar.frame.size.height-20,
navBar.frame.size.width,
navBar.frame.size.height);
} completion:^(BOOL finished) {
[navBar setHidden:TRUE];
}];
} else {
// Change to regular mode
// Show status bar and navigation bar
[navBar setHidden:FALSE];
[[UIApplication sharedApplication] setStatusBarHidden:NO
withAnimation:UIStatusBarAnimationSlide];
[UIView animateWithDuration:animationDuration animations:^{
navBar.frame = CGRectMake(navBar.frame.origin.x,
0,
navBar.frame.size.width,
navBar.frame.size.height);
} completion:^(BOOL finished) {
}];
}
助言がありますか?
編集:回転の再レイアウト後の画面は次のようになります:画像