xcode5 ios7 status bar 各類隱藏問題

各類關於ios7 下隱藏status bar的問題。聚集一下:

用xcode5開發新的iOS遊戲,雖然我已經在info.plist裏面把Status bar is initially hidden設置成了YES,但在設備上一跑仍是看到status bar,

到Info.plist,而後添加一個新的row,"View controller-based status bar appearance",而後把鍵值設置爲NO.
再測試,就ok了。

可是在調用相機功能,後又會出來。

最後找到以下文章解決問題

-------------------------------------------------------- ios

先來看看網上同胞們給出的答案: xcode

1.總結的最全面的要數http://stackoverflow.com/questions/18294872/ios-7-status-bar-back-to-ios-6-style 架構

這篇文章總結的當然很好,但終究是少了些例子。並且是英文的,相信很多和我同樣英文很差的,看得是一頭霧水。不過增長些概念方面得知識仍是有必要的。 app

2. 本身看到的其餘人的解決辦法以及本身嘗試的結果,大概是下面這樣子的,歡迎拍磚交流。 測試


第一種: ui

首先,須要在Info.plist配置文件中,增長鍵:UIViewControllerBasedStatusBarAppearance,並設置爲YES;
而後,在UIViewController子類中實現如下兩個方法: spa

1 - (UIStatusBarStyle)preferredStatusBarStyle
2 {
3     return UIStatusBarStyleLightContent;
4 }
5  
6 - (BOOL)prefersStatusBarHidden
7 {
8     return NO;
9 }

最後,在須要刷新狀態欄樣式的時候,調用[self setNeedsStatusBarAppearanceUpdate]方法便可刷新 

這種方法本人以爲不是很好(不知道是否方法部隊),能解決問題,但對於沒有基類的程序(架構不是太好的應用),未免很繁瑣,須要進行追個處理。 code


第二種: orm

首先,須要在Info.plist配置文件中,增長一下兩個鍵值對。 blog

View controller-based status bar appearance > NO

Status bar style > UIStatusBarStyleLightContent (simple string)(這個我本人建議仍是加在代碼中比較好,若是代碼中有相應的處理,其餘有地方設置部隊,相應的controller將不受影響)

而後,在相關的controller中進行修改。

好比:navigationcontroller須要增長一個64pix的圖片,或者修改其高度

其餘普通的controller,本人的處理辦法是加入代碼:

01 - (void)viewDidAppear:(BOOL)animated
02 {
03     [super viewDidAppear:NO];
04     CGRect frame = self.view.frame;
05     if ([[UIDevice currentDevice] isOS7Version]) {
06         frame.origin.y = 20;
07         frame.size.height = self.view.frame.size.height - 20;
08         [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
09     } else {
10         frame.origin.x = 0;
11     }
12     self.view.frame = frame;
13 }


第三種:

直接設置window,由於在ios7中statusbar是浮在上面的,那麼咱們就將window向下移20pix。從理論上講,我很認同這種方法,但沒有嘗試成功。若有那位大神成功了嘗試,多謝能指教。

http://stackoverflow.com/questions/18886195/ios-7-status-bar-overlapping-ui

3. 在這裏鄙人還要補充的一點是UIImagePickerController對於statusbar的修改。這點曾糾結了我一個多小時,後來看到了有人以下解決:

1 - (void)navigationController:(UINavigationController *)navigationController
02       willShowViewController:(UIViewController *)viewController
03                     animated:(BOOL)animated {
04  
05     if ([navigationController isKindOfClass:[UIImagePickerController class]] &&
06         ((UIImagePickerController *)navigationController).sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
07         [[UIApplication sharedApplication] setStatusBarHidden:NO];
08         [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
09     }
10 }

很好的解決了個人問題。參考連接以下: http://stackoverflow.com/questions/2982095/is-there-a-way-to-prevent-uiimagepickercontroller-change-statusbar-style

仍是先輩們總結的到位呀:又發現了一篇好文章http://www.vinqon.com/codeblog/?detail/11109

---------------------------------
相關文章
相關標籤/搜索