Comment puis-je définir par programme d'orientation de l'écran sous iOS 7?

Je suis en train de travailler sur une application iPad, en utilisant la mise en page automatique, où, si l'utilisateur active un certain mode ("heads-up") de mode, je veux soutenir uniquement en mode portrait (portrait ou à l'envers) l'orientation, et de plus, si l'appareil est en mode paysage, j'aimerais passer automatiquement en mode portrait.

Dans le top view controller, j'ai le texte suivant:

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

- (BOOL) shouldAutorotate {
    return TRUE;
}

Basée sur les réponses que j'ai vu ailleurs, ici, la réponse semble être que je devrais utiliser l'application "setStatusBarOrientation". Par conséquent, dans la méthode où l'utilisateur a sélectionné le "heads-up" mode, j'ai inclus:

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

Toutefois, cela ne veut tout simplement semblent pas faire quoi que ce soit. Bien que je ne peux déplacer physiquement le périphérique pour obtenir de la faire pivoter en mode portrait, il ne le fait pas automatiquement.

En fait, lorsqu'en mode paysage après l'exécution du code ci-dessus pour tenter de définir par programmation de l'orientation, quand j'ai une requête à l'application "statusBarOrientation" avec le code suivant, il reste à "4" pour le paysage:

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

Il semblait comme peut-être la mise en page automatique n'a pas été déclenchée avec la setStatusBarOrientation, j'ai donc tenté d'ajouter ce code après avoir, à aucun effet:

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

Je me rends compte Apple veut laisser l'appareil à l'orientation dans les mains de l'utilisateur. Cependant, je voudrais être en mesure de prendre en charge paysage lorsqu'il n'est pas "heads-up" de mode.

Me manque quelque chose pour être en mesure à la force de changement d'orientation?

InformationsquelleAutor John Stewart | 2014-01-08