2010-11-18 3 views
9

Ho un ViewController che gestisce una vista in cui ho una vista tabella, un ImageView e una barra di navigazione. Quando ho messo in modalità paesaggio della barra di navigazione non ridimensiona a 32, rimane ancora al 44 ho cercato prima di utilizzare il ridimensionamento automatico in IB senza successo, poi ho cercato di inserire questo codice nel ViewControllerproblema di modalità orizzontale con una barra di spostamento

- (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; 
} 

ma niente. Come posso risolvere questo problema?

risposta

7

ho commesso un errore, non c'è un navigationController, così ho collegato la barra di navigazione in IB con l'uscita navBar nel codice e ho usato

- (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; 
} 

Funziona Ora, ho solo un problema con la vista immagine

+4

È necessario chiamare super in questo metodo, non dovrebbe essere commentato. – titaniumdecoy

0

Ho avuto lo stesso problema con un'immagine di sfondo personalizzata per la barra superiore di navigazione.

L'immagine orizzontale non era l'altezza corretta, era alta 44px invece di 32px (lo stesso per la versione @ 2x, era 88px invece di 64). Dopo aver ritagliato le immagini, la barra superiore orizzontale ha l'altezza corretta.