2013-11-26 9 views
28

Jak dodać przewodnik po topografii w pliku NIB lub jak określić spację z górnego paska nawigacji i paska stanu, aby nie powodował problemów między ios 6 a iOS 7 ?Dodawanie przewodnika po topografii w pliku NIB (XIB)

+2

ten http://stackoverflow.com/questions/17074365/status-bar-and-navigation-bar-appear-over-my-views-bounds-in-ios-7 – freelancer

+0

Używam alternatywnego sposobu. Sprawdź ten http://stackoverflow.com/a/26397943/1021628 –

Odpowiedz

26

Można to zrobić przez wdrażając nową właściwość o nazwie edgesForExtendedLayout w iOS7 SDK

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

lub

Jeśli używasz paska nawigacyjnego i xcode5 potem ..

interfejs Builder, wybierz Zobacz kontroler, a następnie przejdź do inspektora atrybutów. W "Rozszerz krawędzie". sprawdzić pod górną barów

mam rozwiązać mój problem z Here

+2

Technicznie, uzyskujesz dostęp do 'setEdgesForExtendedLayout:', więc sprawdzasz odpowiedź na niewłaściwą metodę. Ale to tylko dziurkowanie. – lxcid

+1

To nie pomaga, ponieważ mam tło, które chcę pokazać za pomocą przezroczystego paska nawigacyjnego. 'edgesForExtendedLayout' przesuwa wszystko w dół. – Jadar

-2

robie to programowo.
ponieważ trzeba sprawdzić oba rozmiary ramek dla ios 7 i innych.
ponieważ dla paska stanu musisz zarządzać 20 pikselami w IOS 7 i innych.
tak, wystarczy umieścić View w XIB jak chcesz w dowolnej IOS i inne można zarządzać przez to ...

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 
      { 


      } 

Nadzieja to pomaga ....

+0

Problem z tym kodem polega na tym, że jest on bardzo zależny od rozmiaru ekranu. Tego typu rzeczy często się zmieniają! –

2

myślę, że trzeba pisać ten warunek dla tej kontroli

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. 
    } 
Powiązane problemy