2013-09-25 46 views
13

我使用的Xcode 4.6,當我離開了iOS6的開發UISplitView應用程序我已經設計:如何設置iOS的6/7三角洲編程

enter image description here

現在我遷移到新的Xcode5,現在我有這個設計:

enter image description here

UINavigationBar的completelly重疊我的UISearchBar ...

利奧納丹告訴我有關使用iOS 6/7三角洲,但由於我創建並以編程方式添加我的UISplitViewControllers,

這可能不起作用我需要以編程方式設置iOS 6/7,但我不知道如何,我會欣賞的任何幫助

+2

如果你想這樣做的代碼,你必須工作與框架。 'if(iOS7){view.frame = ...} else {view.frame = ...}' –

+0

@PetroKorienev或者只是改變約束常量?這比更新幀更容易。 – Sulthan

+0

OP不使用自動佈局,並在代碼中初始化其控制器。在代碼中添加約束並不比更新框架更容易。 –

回答

18

在iOS 7中現在有擴展的邊緣,這就是導航欄與搜索欄重疊的原因。你可以設置self.edgesForExtendedLayout = UIRectEdgeNone;這是UIVewControlelr屬性。 您也可以根據iOS的版本進行檢查,您可以根據設備中當前版本的iOS執行操作。

NSString *version = [[UIDevice currentDevice] systemVersion]; 
int ver = [version intValue]; 
if (ver < 7){ 
//iOS 6 work 
} 
else{ 
//iOS 7 related work 
} 
5

此外,您還可以使用NSFoundationVersionNumber

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { 
    // > iOS7 
} else { 
    // <= iOS6 
} 
+0

蘋果在iOS 7轉換指南中建議使用此方法。 – coverback

3

您可以創建一個萬客隆爲解決這個問題。 它對我很有用。

#define iOS7Delta (([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) ? 20 : 0) 
-2

如果視圖的嵌入在一個UINavigationController - 簡單地取消選中「半透明」爲根導航欄。

在故事板,選擇導航控制器場景, 未來選擇導航欄和在屬性檢查器(工具 - 4片) 勾去掉「半透明」