3

Ich habe eine UIViewController ohne Statusleiste, und es startet eine zweite UIViewController, die eine Statusleiste hat.Ansicht gedrückt nach Statusleiste versteckt?

Wenn die erweiterte Statusleiste aktiv ist, werden beide Ansichten korrekt angezeigt, aber wenn ich die zweite Ansicht verlasse und zur ersten zurückkehre, sehe ich einen 20pt schwarzen Balken oben und die gesamte Ansicht wird nach unten gedrückt, wodurch die Unterseite.

Ich habe versucht, den Rahmen auf den Ursprung 0,0 in viewDidAppear zurückgesetzt, aber es hat keine Wirkung.

Warum wird die Ansicht gedrückt und wie kann ich sie beheben?

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    self.view.frame = CGRectMake(0, 0, self.width, self.height); 
    self.view.backgroundColor = [UIColor redColor]; 
} 

- (void)openShare { 
    Share *share = [[Share alloc] init]; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:share]; 

    nav.modalTransitionStyle = UIModalPresentationPopover; 
    [self presentViewController:nav animated:YES completion:nil]; 
} 

oben in der Ansicht vor openShare heißt:

enter image description here

oben in der Ansicht nach Share vorgestellt und entlassen:

enter image description here

+0

Haben Sie das Plist für Viewcontroller-basierte Statusleiste apearence konfiguriert ?? Und die Ansichten Rahmen hat nichts mit der schwarzen Ansicht zu tun Das Ändern des Fensterrahmens könnte funktionieren, aber ich glaube nicht, dass es eine gute Idee ist. –

+0

Ja, ich setze ' UIViewControllerBasedStatusBarAppearance' – Cbas

+0

Wie kann ich den Fensterrahmen ändern? 'Fenster' scheint nicht im View Controller zu existieren – Cbas

Antwort

0

Gestern hatte ich die genaue Das gleiche Problem in meiner App.

Ich machte zwei Dinge, die das Problem lösen.

  1. ich die Top Space to: Top Layout Guide Einschränkung mit einer Konstante von 20 (gleich wie Statusleiste Höhe) auf meinem navigationbar
    Constaint
  2. ich dies in den Controllern hinzugefügt, die das Problem ([self.view layoutSubviews])

    haben
    -(void)viewDidAppear:(BOOL)animated { 
        [super viewDidAppear:animated]; 
    
        [self.view layoutSubviews]; 
    } 
    
+0

Ich habe keine navbar. Ich versuchte die zweite Lösung, aber es hatte keine Wirkung – Cbas

+0

Navigationbar war ein Beispiel. Verwenden Sie diese Lösung mit allen Steuerelementen –

+0

Und Sie müssen 1. + 2. Oder es wird nicht funktionieren –