2013-09-25 19 views
13

byłem tworzeniem aplikacji UISplitView używając Xcode 4.6 kiedy wyszedłem iOS6 miałem design:jak ustawić iOS 6/7 delt programowo

enter image description here

teraz migrować do nowej Xcode5 a teraz mam to design:

enter image description here

UINavigationBar pokrywa completelly mój UISearchBar ...

Leo Natan powiedział mi o używaniu iOS 6/7 Deltas, ale od kiedy tworzę i dodam programowo UISplitViewControllers,

to może nie działać Muszę ustawić programowo iOS 6/7, ale nie Wiem, jak, każda pomoc doceniam:

+2

Jeśli chcesz to zrobić w kodzie, trzeba pracować z ramkami. 'if (iOS7) {view.frame = ...} else {view.frame = ...}' –

+0

@PetroKorienev Lub po prostu zmienić stałe ograniczeń? Łatwiej niż aktualizować ramki. – Sulthan

+0

OP nie korzysta z automatycznego układu i zainicjował swoje kontrolery w kodzie. Dodawanie wiązań w kodzie nie jest łatwiejsze niż aktualizowanie ramek. –

Odpowiedz

18

W iOS 7 są teraz rozszerzone krawędzie, dlatego pasek nawigacyjny nakłada się na pasek wyszukiwania. Możesz ustawić self.edgesForExtendedLayout = UIRectEdgeNone; to jest właściwość UIVewControlelr. Możesz również dokonywać sprawdzeń w zależności od wersji systemu iOS. Możesz wykonywać różne czynności w zależności od aktualnej wersji urządzenia iOS.

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

Ponadto, można użyć NSFoundationVersionNumber

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

Ten sposób jest sugerowany przez Apple w wersji przejściowej iOS 7. – coverback

3

Można utworzyć Makro do rozwiązania tego problemu. jest to przydatne dla mnie.

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

Jeśli widok osadzony w UINavigationController - prostu odznacz „Translucent” na pasku nawigacyjnym korzeń.

W serii ujęć, wybierz Scene Navigation Controller, Następnie wybierz pasek nawigacyjny oraz w atrybutach Inspector (Narzędzia - 4 karta) odznacz "Translucent"