IOS7狀態欄StatusBar官方標準適配方法


本文轉載自:http://blog.csdn.net/rhljiayou/article/details/12029927 

IOS7狀態欄StatusBar官方標準適配方法

hello,大家好,ios7正式版已經發布,相信大家都在以各種方式來適配ios7.

如果你已經下載了xcode5,正準備使用,你會發現各種佈局的改變.

註定這段時間是忙的,是頭疼的!原創在此哦http://my.csdn.net/rhljiayou

這兩天經常會碰到羣裏有人在問問題,問ios7怎麼適配,以及各種網上說的如何解決ios7下狀態欄的問題.

我發現各種羣裏流傳着一種適配方法,就是修改window的座標(window.frame),然後大家紛紛效仿,但是往往出現各種問題,發出各種報怨,各種吐嘈;

殊不知別人的寫法並不是你的寫法,別人的適配也不是你的適配,所以別的方法不一定能解決你的問題.我們要理解他,得到解決思路,而不是解決代碼.

其實官方已經給出狀態欄同時兼容ios6和ios7的解決方案.他就集成在xcode5中,如下圖所示:

 着急做適配,可能會做錯喔!原創在此哦http://my.csdn.net/rhljiayou

要了解這個適配先要講一下Deltas也就是這個 ∆,上過高中物理都應該知道這個東西,不認識的請自覺檢討(初中數學就教過).

Deltas的意思你可以理解爲增量.相對增量.

科普講完,下面是具體使用.

首先要出現∆選項,必須使用xcode5的方式打開xib:

在xib的第一個標籤中哦~原創在此哦http://my.csdn.net/rhljiayou

由於我們要同時兼容6和7,所以我們需要選6.1或更早


然後調整增量,增量的意思是如果運行在ios7的模式下,就使其座標+增量,如果是6或更早的,就是直接使用上面的座標

效果如圖,十分完美,呵呵原創在此哦http://my.csdn.net/rhljiayou




iOS7的界面上移問題

參考鏈接:

1.http://blog.csdn.net/rhljiayou/article/details/12029927

第一種方法:修改BaseSDK

XCode5的默認BaseSDK是iOS7,所以要修改成工程文件創建時的BaseSDK。但是XCode5中默認只帶有iOS7的SDK,所以要想能做到更改SDK,我們就要添加舊的SDK。

1.從蘋果開發者中心下載舊版本XCode,https://developer.apple.com/downloads/index.action?name=Xcode

2.從中提取出iPhoneOS SDK 和iPhone Simulator SDK,前者所在的位置是XCode應用程序包中的路徑是Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs,後者是Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs

3.假設我們已經安裝了XCode5,那麼我們在應用程序中找到XCode.app右擊顯示包內容,依此 Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs 路徑打開,把提取出的iPhoneOS SDK複製進去。模擬器SDK的拷貝也同理。

4.重啓XCode,這個時候就可以設置Base SDK了

5.假如設置成iOS6,那麼應用就算在運行iOS7的設備上也是呈現iOS6的特性。舉個例子,倘若此應用在需要輸入的時候彈出的鍵盤是iOS6樣式的並不是iOS7樣式的。

6.可以參考http://github.kimziv.com/blog/2013/09/22/how-to-use-older-base-sdks-in-xcode5/

第二種方法:手動代碼設置各個UI組件的frame

1.判斷當前設備的系統

#define iOS7 ([[[UIDevice currentDevice]systemVersion] floatValue] >= 7.0)?YES:NO

2.再根據不同的系統設置Frame

第三種方法:改變window

1.需要在Info.plist配置文件中,增加鍵:UIViewControllerBasedStatusBarAppearance,並設置爲YES

2.在AppDelegate.m中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

添加

第四種方法:對每個UIViewController的.m文件中編寫代碼進行設置(推薦)

推薦使用這種方法

在iOS7當中未使用UINavigationController界面相對iOS6會上移20px,使用了會上移64px。簡單的說導航欄和狀態欄默認都會覆蓋下面的頁面,使用下面的方法就可以避免

if ([[[UIDevice currentDevice]systemVersion]floatValue]>=7.0) {

self.edgesForExtendedLayout = UIRectEdgeNone;

}




發佈了14 篇原創文章 · 獲贊 5 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章