ios9後UIViewControllerBasedStatusBarAppearance作用以及狀態欄空白解決

升級Xcode 7.0發現網絡訪問失敗。
輸出錯誤信息
#warning: 獲取app配置信息失敗: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
原因:iOS9引入了新特性App Transport Security (ATS)。
詳情:App Transport Security (ATS)
新特性要求App內訪問的網絡必須使用HTTPS協議。
但是現在公司的項目使用的是HTTP協議,使用私有加密方式保證數據安全。現在也不能馬上改成HTTPS協議傳輸。
最終找到以下解決辦法:
在Info.plist中添加NSAppTransportSecurity類型Dictionary。 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設爲YES

Bitcode問題

原因:Xcode7 及以上版本會默認開啓 bitcode 。
bitcode具體是什麼就不解釋了。
解決方法:
1.更新library使包含Bitcode,否則會出現以上的警告。
2.關閉Bitcode,簡單粗暴。

項目運行報錯如下

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
出錯原因:設置app的狀態欄樣式的使用使用了舊的方式,在info.plist裏面設置了View controller-based status bar appearance爲NO,默認爲YES,一般式iOS6的時候使用這種方式,iOS7,8也兼容,但是到了iOS9就報了警告。

酷六書坊

解決辦法:

刪除 原先的設置代碼
//設置狀態欄的白色 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

修改方式將View controller-based status bar appearance設置爲YES,然後使用新的方式來實現狀態欄的樣式。


當plist中沒有UIViewControllerBasedStatusBarAppearance這個key,或者存在這個key,並且value爲YES時,

viewController的preferredStatusBarStyle方法對狀態欄的設置生效;

當UIViewControllerBasedStatusBarAppearance對應的value爲NO時,
[UIApplication sharedApplication] 通過方法setStatusBarStyle對狀態欄的設置生效。

隱藏狀態欄

有時候我們需要隱藏狀態欄,那麼此時我們在view controller中override方法prefersStatusBarHidden:即可,如下代碼所示:

- (BOOL)prefersStatusBarHidden

{

    return YES;

}

小麥藏閣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章