Richtige Art und Weise zu verstecken Statusleiste auf iOS, mit animation und ändern der Größe root anzeigen

Betrachten eines view-controller muss slide-out (oder aus) blenden Sie die Statusleiste, wenn eine Schaltfläche geklickt wird.

- (void) buttonClick:(id)sender
{
    [[UIApplication sharedApplication] setStatusBarHidden:YES
                                            withAnimation:UIStatusBarAnimationSlide];
}

Den oben effektiv verbirgt die Statusleiste, aber nicht die Größe der root-Ansicht entsprechend, so dass eine 20 pixel Abstand an der Spitze.

Was ich erwartet habe ist der root-Ansicht erweitern über den Raum, die zuvor verwendet wurde, indem die status-bar (animiert, mit der gleichen Dauer als der status bar animation).

Was ist der richtige Weg, dies zu tun?

(Ich bin mir bewusst, es gibt viele ähnliche Fragen, aber ich konnte nicht finden alle über das ausblenden der Statusleiste auf Nachfrage gegenüber, die Sie versteckt anzeigen, um eine neue view-controller)

Der "brute-force" - Ansatz

Offensichtlich, die folgenden Werke...

[[UIApplication sharedApplication] setStatusBarHidden:YES
                                        withAnimation:UIStatusBarAnimationSlide];
[UIView animateWithDuration:0.25 animations:^{
    CGRect frame = self.view.frame;
    frame.origin.y -= 20;
    frame.size.height += 20;
    self.view.frame = frame;
}];

...hat aber Nachteile:

  • Hardcodes die Dauer der slide-animation
  • Hardcodes die Höhe der Statusleiste
  • Der stammansicht Ursprung bleibt auf (0,-20). Ich mag meine frames zu beginnen bei (0,0), wenn möglich.

Was ich schon versucht

  • Dass die autoresize-Maske der root-Ansicht hat UIViewAutoresizingFlexibleTopMargin und UIViewAutoresizingFlexibleHeight.
  • Genannt [self.view setNeedsLayout] nach ausblenden der Statusleiste.
  • Genannt [self.view setNeedsDisplay] nach ausblenden der Statusleiste.
  • Set wantsFullScreenLayout zu YES vor und nach dem ausblenden der Statusleiste.

InformationsquelleAutor der Frage hpique | 2012-11-29

Schreibe einen Kommentar