2011-08-11 14 views
8

Ogólnie, w trybie poziomym pasek nawigacyjny kontrolowany przez kontroler nawigacyjny automatycznie zmniejsza jego rozmiar.Jak zapobiegać automatycznemu przypisywaniu paska UINavigation w krajobrazie

Ale chcę zapobiec tej autorezacji.

Najpierw ustawiłem pasek nawigacyjny w pozycji ukrytej i użyłem innego paska nawigacji, który nie jest kontrolowany przez kontroler nawigacyjny. Rozwiązałem problem. Ale chcę znaleźć sposób na wyłączenie automatycznego zsynchronizowania paska nawigacyjnego w krajobrazie bez korzystania z kolejnego paska nie kontrolowanego przez kontroler nawigacyjny.

+0

dlaczego chcesz to zrobić? to jest standardowe zachowanie iOS. – nielsbot

+0

@nielsbot Zobacz iOS 7 Safari w krajobrazie;) – fumoboy007

Odpowiedz

5

I rozwiązać to poprzez stworzenie kategorii na UINavigationBar:

@implementation UINavigationBar (customHeight) 

- (CGSize)sizeThatFits:(CGSize)size 
{ 
    CGSize newSize = CGSizeMake(self.frame.size.width,44); 
    return newSize; 
} 

@end 

z kategorią stworzony, teraz pozostaje wysokość ustalono na 44 - I nawet nie trzeba importować kategorię wszędzie.

Moja aplikacja korzysta ze scenorysów, ale jestem pewien, że działałoby to w obu kierunkach.

+2

Podczas gdy to rozwiązuje problem, nie jest dobrą praktyką wypróbowywanie i używanie kategorii dla celów nadrzędnych metody. Powinieneś to zrobić w podklasie. Przeczytaj więcej tutaj: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWoundObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html – Ricky

+1

to rozwiązanie działa dla paska nawigacji, ale przesuwa mój pasek narzędzi o około 10 pikseli. u dołu widoku ... – dot

+2

Powoduje to, że elementy na pasku nie będą już wyśrodkowane w pionie. Jakikolwiek sposób rozwiązać ten problem? – Joey

2

To będzie pracować dla iOS 8

extension UINavigationBar { 
    public override func sizeThatFits(size: CGSize) -> CGSize { 
     var newSize = CGSizeMake(UIScreen.mainScreen().bounds.width, 44) 
     return newSize 
    } 
} 
+2

Prosimy o pouczenie pytającego i nas wszystkich przez krótkie wyjaśnienie _how i why_ it works. W ten sposób możesz mieć nadzieję, że uda Ci się pozyskać upomnienie nie tylko przez jinbruce627, ale także od innych użytkowników. –

Powiązane problemy