Cómo configurar iOS 6/7 Deltas mediante progtwigción

Estuve desarrollando una aplicación UISplitView usando Xcode 4.6 cuando salí de iOS6. Tenía layout:

introduzca la descripción de la imagen aquí

Ahora migro a Xcode5 nuevo y ahora tengo este layout:

introduzca la descripción de la imagen aquí

UINavigationBar se superpone completamente a mi UISearchBar …

Leo Natan me contó sobre el uso de iOS 6/7 Deltas, pero como estoy creando y agregando mis UISplitViewControllers mediante progtwigción,

esto puede no funcionar. Necesito configurar el iOS 6/7 programáticamente, pero no sé cómo, cualquier ayuda que pueda apreciar

En iOS 7 ahora hay bordes extendidos, y esa es la razón por la barra de navigation superponiendo la barra de búsqueda. Puede configurar self.edgesForExtendedLayout = UIRectEdgeNone; esta es propiedad de UIVewControlelr. También puede realizar comprobaciones según la versión de iOS y puede hacer las cosas según la versión actual de iOS en el dispositivo.

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

Además, puede usar NSFoundationVersionNumber

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

Puede crear un makro para resolver este problema. Es útil para mí.

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

Si la vista está incrustada en un UINavigationController, simplemente desmarque "Translucent" para su barra de navigation raíz.

En el guión gráfico, select Escena del controller de navigation, luego select Barra de navigation y en el Inspector de attributes (Utilidades – pestaña 4), desactive "Translúcido"