2013-11-26 36 views
28

如何在NIB文件中添加頂層佈局指南,或者如何從頂部導航欄和狀態欄指定空間,以便它不會在iOS 6和iOS 7之間產生問題?在NIB文件(XIB)中添加頂層佈局指南

+2

檢查這一項http://stackoverflow.com/questions/17074365/status-bar-and-navigation-bar-appear-over-my-views-bounds-in-ios-7 – freelancer

+0

我使用另一種方法。檢查這個http://stackoverflow.com/a/26397943/1021628 –

回答

26

您可以通過在iOS7 SDK實現所謂edgesForExtendedLayout新的屬性來完成這個

-(void)viewDidLoad { 
     if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) 
     self.edgesForExtendedLayout = UIRectEdgeNone; 
} 

如果您正在使用導航欄和xcode5然後..

在Interface Builder中,選擇視圖控制器,然後導航到屬性檢查器。在「延伸邊緣」中。檢查在熱門酒吧

我已經解決了我的問題,從Here

+2

從技術上講,你正在訪問'setEdgesForExtendedLayout:'所以你有點檢查錯誤方法的響應。但這只是挑剔。 – lxcid

+1

這沒有幫助,因爲我有一個背景,我希望通過透明的導航欄可見。 'edgesForExtendedLayout'推動一切。 – Jadar

-2

我編程方式這樣做。
,因爲你必須檢查ios 7和其他的幀大小。
因爲對於狀態欄,你必須在iOS 7和其他版本中管理20個像素。
所以,只要把觀XIB如您在任何IOS想和其他的你可以通過這個管理...

CGSize result = [[UIScreen mainScreen] bounds].size; 
     if(result.height == 480) 
     { 
    NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; 
      if ([[vComp objectAtIndex:0] intValue] >= 7) { 
       NSLog(@"Ios7 resize the frame"); 

      } 
      else 
      { 


      } 

} 

     if(result.height == 568) 
     { 
    NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; 
      if ([[vComp objectAtIndex:0] intValue] >= 7) { 
       NSLog(@"Ios7 resize the frame"); 


      } 
      else 
      { 


      } 

希望這有助於....

+0

此代碼的問題在於它高度依賴於屏幕大小。這些事情往往會經常改變! –

2

我認爲你需要寫這個條件對於

float SystemVersion=[[[UIDevice currentDevice] systemVersion] floatValue]; 
    if(SystemVersion<7.0f) 
    { 
    //Currently your app is running in IOS6 or older version. So you need not 
      to do anything. 
    } 
    else 
    { 
    // Currently your app is running in IOS7. 
    }