#pragma mark - 解決iOS7狀態欄問題 - (void)viewWillAppear:(BOOL)animated { // 注意點:自定義佈局方法必須放在隱藏或顯示導航欄(若是有的話)這句話後面,否則會亂; self.navigationController.navigationBarHidden = YES; // 自定義佈局 [self autoAdaptionLayer]; } // 自定義佈局 - (void)autoAdaptionLayer { // 若是是IOS7.0以上 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { self.edgesForExtendedLayout = UIRectEdgeNone; // 非全屏佈局 self.extendedLayoutIncludesOpaqueBars = NO; // 當導航欄使用不透明圖片,View不延伸之Bar下面 self.modalPresentationCapturesStatusBarAppearance = NO; [self setNeedsStatusBarAppearanceUpdate]; // 設置StatusBar的樣式 CGRect viewBounds = self.view.bounds; // ******* 這個修訂很重要 ******* if(viewBounds.size.height == 548) viewBounds.size.height = 568; if(viewBounds.size.height == 460) viewBounds.size.height = 480; CGFloat topBarOffset = 0; // self.topLayoutGuide.length; CGFloat myHeight = viewBounds.size.height; // 存在導航欄控制器 if (self.navigationController) { // 導航欄隱藏的時候(底部空間高度須要-20) if (self.navigationController.navigationBarHidden) { viewBounds.origin.y = topBarOffset - 20; viewBounds.size.height = myHeight - 20; } else // 導航欄顯示的時候(底部空間高度須要-84) { viewBounds.origin.y = topBarOffset * -1; viewBounds.size.height = myHeight - 64; } } else { viewBounds.origin.y = topBarOffset -20; viewBounds.size.height = myHeight - 20; } self.view.bounds = viewBounds; } // IOS7.0如下 else { CGRect viewBounds = self.view.bounds; // ******* 這個修訂很重要 ******* if(viewBounds.size.height == 548) viewBounds.size.height = 568; if(viewBounds.size.height == 460) viewBounds.size.height = 480; CGFloat myHeight = viewBounds.size.height; // 判斷是否存在導航欄控制器 if (self.navigationController) { // 導航欄隱藏的時候(底部空間高度須要-20) if (self.navigationController.navigationBarHidden) { viewBounds.size.height = myHeight; } else // 導航欄顯示的時候(底部空間高度須要-22) { viewBounds.size.height = myHeight - 22; } } else { viewBounds.size.height = myHeight; } self.view.bounds = viewBounds; } } // 設置StatusBar的樣式 // 上面這句方法用於刷新顯示statusBar的樣式和是否隱藏,若是須要就在當前使用的VC中重寫下面兩個方法 - (UIStatusBarStyle)preferredStatusBarStyle { // UIStatusBarStyleDefault // UIStatusBarStyleLightContent // UIStatusBarStyleBlackTranslucent // UIStatusBarStyleBlackOpaque return UIStatusBarStyleLightContent; // 會屢次調用 } - (BOOL)prefersStatusBarHidden { return NO; // 會屢次調用 }