2010-11-18 3 views
9

Ich habe einen ViewController, der eine Ansicht verwaltet, in der ich eine Tabellenansicht, ein ImageView und eine Navigationsleiste habe. Wenn ich es in den Querformat-Modus die Navigationsleiste nicht auf 32 ändern, bleibt es immer noch 44 Ich versuchte zuerst, die Autosizing in IB ohne Erfolg zu verwenden, dann habe ich versucht, diesen Code in den ViewControllerQuerformat-Problem mit einer Navigationsleiste

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

aber nichts. Wie kann ich dieses Problem lösen?

Antwort

7

machte ich einen Fehler, gibt es kein Navigation, so verknüpfen ich die Navigationsleiste in IB mit dem Ausgang navBar im Code und ich verwendet habe,

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

Es funktioniert jetzt, ich habe nur ein Problem mit der Bildansicht

+4

Sie müssen Super in dieser Methode aufrufen, sollte es nicht auskommentiert werden. – titaniumdecoy

0

Ich hatte das gleiche Problem mit einem benutzerdefinierten Hintergrundbild für die Navigation oben Leiste.

Mein Landschaftsbild hatte nicht die richtige Höhe, es war 44px hoch statt 32px (dasselbe für die @ 2x Version, es war 88px statt 64). Nach dem Beschneiden der Bilder hat die obere Leiste der Landschaft die richtige Höhe.