導航欄這是我的問題....如何停止的狀態欄覆蓋iOS6的
這種情況發生時:
- 狀態欄淡出使用按鈕。
- 從風景向顛倒的風景旋轉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 * 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
也無濟於事。有任何想法嗎?狀態欄切換
更換爲'shouldAutorotateToInterfaceOrientation'不是'willRotateToInterfaceOrientation'。它是'supportedInterfaceOrientations'。 – rmaddy
@rmaddy同意,但在iOS 5中它有一個目的 - 讓你知道它即將旋轉屏幕。 – Robert
這是不正確的。對'shouldAutorotateToInterfaceOrientation'的調用永遠不會表明視圖控制器即將旋轉。其目的是要問是否允許某些旋轉。 'willRotateToInterfaceOrientation'方法用於指示旋轉實際上即將發生。請記住,這些方法是關於視圖控制器,而不是屏幕。 – rmaddy