2013-11-26 16 views
28

Come posso aggiungere guida di layout superiore nel file di NIB o Come è possibile specificare lo spazio dalla barra in alto e lo stato di navigazione barra in modo che non crea problema tra iOS 6 e iOS 7 ?Aggiungere guida di layout superiore nel file di NIB (XIB)

+2

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

+0

Io uso un modo alternativo. Controllare questo http://stackoverflow.com/a/26397943/1021628 –

risposta

26

È possibile effettuare questa operazione mediante l'attuazione di nuove proprietà chiamata edgesForExtendedLayout in iOS7 SDK

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

o

Se si utilizza barra di navigazione e poi .. xcode5

In Interface Builder, selezionare guarda il controller, quindi vai alla finestra di ispezione degli attributi. In "Estendi bordi". Controllare sotto Migliore Bar

ho risolto il mio problema da Here

+2

Tecnicamente, si sta accedendo 'setEdgesForExtendedLayout:' in modo che siano un po controllando per una risposta dal metodo sbagliato. Ma questo è solo pignolo. – lxcid

+1

Questo non aiuta, perché ho uno sfondo che voglio essere visibile attraverso una barra di navigazione trasparente. 'edgesForExtendedLayout' spinge tutto verso il basso. – Jadar

-2

lo sto facendo a livello di codice.
perché è necessario controllare entrambe le dimensioni dei fotogrammi per iOS 7 e altri.
perché per la barra di stato si deve gestire 20 pixel in iOS 7 e altri.
così, basta mettere Visualizza in XIB come si desidera in qualsiasi IOS e per altre è possibile gestire da questo ...

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 
      { 


      } 

Spero che questo aiuti ....

+0

Il problema con questo codice è che dipende fortemente dalle dimensioni dello schermo. Questo genere di cose tende a cambiare spesso! –

2

penso che è necessario scrivere questa condizione per il check

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. 
    } 
Problemi correlati