これは私の問題です....
これは、次の場合に発生します。
- ボタンを使用してステータスバーをフェードアウトします。
- 横向きから逆さまの横向きに 180 度回転します。
- ボタンを使用すると、ステータス バーがフェードインします。- ナビゲーション バーを覆うようになりました。
ステータス バーの表示を切り替えるボタン コード:
- (IBAction)toggleBar:(id)sender
{
NSLog(@"View Frame : %@", NSStringFromCGRect(self.view.frame));
// Toggle status bar visiblity
BOOL isStatusBarHidden = [[UIApplication sharedApplication] isStatusBarHidden];
[[UIApplication sharedApplication] setStatusBarHidden:!isStatusBarHidden
withAnimation:UIStatusBarAnimationFade];
}
ビューは常にそのフレームを 480 x 288 と報告します。
この問題は、スペースを埋める回転を停止することにより、ハックな回避策を使用して iOS 5 で修正できました。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([[UIApplication sharedApplication] isStatusBarHidden])
{
float oldAlpha = self.navigationController.navigationBar.alpha;
self.navigationController.navigationBar.alpha = 0.01;
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
double delayInSeconds = 0.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
self.navigationController.navigationBar.alpha = oldAlpha;
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
});
}
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
が呼び出されないため、これは iOS 6 では機能しshouldAutorotateToInterfaceOrientation
ません。ただし、その代わりに使用する:willRotateToInterfaceOrientation
も機能しません。何か案は?