2010-11-18 10 views
9

Mam ViewController, który zarządza widokiem, w którym mam widok tabeli, widok obrazu i pasek nawigacyjny. Po umieszczeniu go w trybie poziomym pasek nawigacji nie zmienia rozmiaru na 32, to nadal pozostaje 44 Najpierw spróbowałem użyć autosizing w IB bez powodzenia, wtedy próbowałem umieścić ten kod w ViewControllerProblem z trybem krajobrazu z paskiem nawigacyjnym

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration { 
    //[super willAnimateRotationToInterfaceOrientation:orientation duration:duration]; 
    CGRect frame = self.navigationController.navigationBar.frame; 
    if (UIInterfaceOrientationIsPortrait(orientation)) { 
     frame.size.height = 44; 
    } else { 
     frame.size.height = 32; 
    } 
    self.navigationController.navigationBar.frame = frame; 
} 

ale nic. Jak mogę rozwiązać ten problem?

Odpowiedz

7

popełniłem błąd, nie ma navigationController, więc powiązany pasek nawigacyjny w IB z wylotem NavBar w kodzie i Użyłem

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration { 
    [super willAnimateRotationToInterfaceOrientation:orientation duration:duration]; 
    CGRect frame = self.navBar.frame; 
    if (UIInterfaceOrientationIsPortrait(orientation)) { 
     frame.size.height = 44; 
    } else { 
     frame.size.height = 32; 
    } 
    self.navBar.frame = frame; 
} 

Działa teraz mam tylko problem z widokiem obrazu

+4

Musisz zadzwonić super w tej metodzie, nie powinno to być komentowane. – titaniumdecoy

0

Miałem ten sam problem z niestandardowym obrazem tła dla górnego paska nawigacji.

Moje zdjęcie krajobrazowe nie miało prawidłowej wysokości, było wysokie na 44 pikseli zamiast na 32 pikseli (to samo dotyczyło wersji @ 2x, było to 88 pikseli zamiast 64). Po przycięciu zdjęć górny pasek krajobrazu ma prawidłową wysokość.

Powiązane problemy