Wie kann ich programmgesteuert Gerät Orientierung in iOS 7?

Arbeite ich an einer iPad-app, mit AutoLayout, wo, wenn der Benutzer einen bestimmten Modus ("heads-up" - Modus), ich will nur Unterstützung für portrait (oder Porträt-upside-down -) Orientierung, und außerdem, wenn das Gerät im Querformat, würde ich gerne wechseln automatisch in den portrait-Modus.

In der top-view-controller, ich habe Folgendes:

- (NSUInteger) supportedInterfaceOrientations {
    if (self.modeHeadsUp) {
        return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
    } else {
        return UIInterfaceOrientationMaskAll;
    }
}

- (BOOL) shouldAutorotate {
    return TRUE;
}

Basieren auf den Antworten habe ich an anderer Stelle gesehen hier, die Antwort scheint zu werden, die ich verwenden soll "Anwendung setStatusBarOrientation". Also in der Methode, wo der Benutzer ausgewählt hat "heads-up" - Modus habe ich enthalten:

    UIApplication *application = [UIApplication sharedApplication];
    [application setStatusBarOrientation:UIInterfaceOrientationPortrait
                                animated:YES];

Jedoch, das einfach nicht scheinen, nichts zu tun. Ich kann zwar körperlich bewegen Sie das Gerät, um es zu drehen in den portrait -, ist es nicht automatisch tun.

In der Tat, wenn im landscape-Modus nach der Ausführung der oben genannten code, um programmgesteuert versuchen, setzen der Orientierung, wenn ich die Abfrage für die Anwendung "statusBarOrientation" mit dem folgenden code, es bleibt bei "4" für die Landschaft:

UIApplication *application = [UIApplication sharedApplication];
int orientation = [application statusBarOrientation];
self.movesTextView.text = [NSString stringWithFormat:@"ORIENTATION %d", orientation];

Schien es wie vielleicht autolayout war nicht ausgelöst wird, mit der setStatusBarOrientation, so dass ich versuchte, fügen Sie diesen code nach, gar keine Wirkung:

    [super updateViewConstraints];
    [self.view updateConstraints];

Erkenne ich Apple verlassen will, Gerät Orientierung in den Händen der Benutzer. Aber ich möchte in der Lage, zur Unterstützung von landscape-Modus, wenn nicht im "heads-up" - Modus.

Bin ich etwas fehlt, um in der Lage sein, um die Orientierung der Kräfte ändern?

InformationsquelleAutor John Stewart | 2014-01-08
Schreibe einen Kommentar