6

Ich habe eine UINavigationController mit einem Stamm UIViewController ("root").iOS8 - Nach dem Drücken eines UIViewController auf einem UINavigationController und Drehen des Geräts, ist die Größe in früheren Ansicht Controller

Der Stammansicht-Controller verschiebt einen weiteren UIViewController "Kind". Wenn das "Kind" UIViewController auf dem Bildschirm ist, drehe ich das Gerät und erwarte, dass der "root" View-Controller die Größe entsprechend ändert, aber das passiert nicht.

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { 
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; 
} 

Ich sehe, dass die Größe falsch ist und die Wurzel-View-Controller anpassen nicht richtig auf die Änderung: einen Haltepunkt in der Root-View-Controller nach dem Aufsetzen.

Hat jemand dieses Verhalten erlebt?

Der Code ist wie so:

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 


} 

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { 
/// The size is wrong if this view controller is off screen 
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; 
} 
- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

enter image description here

hier ein Druckbild des NSLog der Größe ist das Gerät nach dem Drehen - Dies ist aus dem Simulator, aber das Verhalten ist das gleiche auf das Gerät.

enter image description here

+0

Wie groß ist Ihre Größe, was erwarten Sie? – gabbler

+0

Ich werde einen Druckbildschirm hinzufügen - nachdem ich das Gerät ein paar Mal gedreht hatte. Beachten Sie, dass die Größe immer gleich ist. –

+0

Ja, es ist immer die gleiche Größe, es sieht aus wie root View Controller dreht überhaupt nicht. – gabbler

Antwort

0

Möglicherweise, dass nur das Fenster drehen. Wenn Sie es so drucken, ist es immer korrekt, wie ich es getestet habe.

[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) 
{ 

} completion:^(id<UIViewControllerTransitionCoordinatorContext> context) 
{ 
    UIWindow *screen = [[[UIApplication sharedApplication] delegate] window]; 
    CGSize mainWindowSize = screen.bounds.size; 
    NSLog(@"Main window size is %@",NSStringFromCGSize(mainWindowSize)); 

}]; 
+0

Das ist ein Hack. Ich möchte das nicht in 20 View-Controller setzen –

+0

All das ist, die aktuelle Größe in das Protokoll auszugeben. In diesem Code ist noch nichts betroffen. –

+0

@NormanH, dieser Code funktioniert für mich, es ist in der vorherigen Ansicht Controller, die Ansicht ist außerhalb des Bildschirms, wenn Sie die aktuelle Ansicht drehen, ist die Protokolle richtig. – gabbler

2

Gleiches Problem auf meinem Projekt. Es scheint, dass UINavigationController und UITabBarController (vielleicht alle Viewcontroller?) Die falsche Größe, um dort Kinder zu geben, wenn Sie anrufen:

‚[super viewWillTransitionToSize: Größe withTransitionCoordinator: Koordinator];‘

Ich habe das Problem behoben, indem ich 'viewWillTransitionToSize: withTransitionCoordinator:' in meiner tabBarController und Navigationsleiste Controller-Unterklasse (der gleiche Code in beiden).

Ich bin mir nicht sicher, das ist der beste Weg, wenn Sie etwas besseres gefunden haben, sagen Sie mir bitte.

Verwandte Themen