Je suis en train de créer une application iPhone et j'ai besoin qu'elle soit en mode portrait. Par conséquent, si l'utilisateur déplace l'appareil latéralement, il ne tourne pas automatiquement. Comment puis-je faire ceci?
Pour désactiver les orientations pour un contrôleur de vue particulier, vous devez maintenant remplacer supportedInterfaceOrientations
et preferredInterfaceOrientationForPresentation
.
- (NSUInteger) supportedInterfaceOrientations {
// Return a bitmask of supported orientations. If you need more,
// use bitwise or (see the commented return).
return UIInterfaceOrientationMaskPortrait;
// return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
// Return the orientation you'd prefer - this is what it launches to. The
// user can still rotate. You don't have to implement this method, in which
// case it launches in the current orientation
return UIInterfaceOrientationPortrait;
}
Si vous ciblez une version antérieure à iOS 6, vous souhaitez utiliser la méthode shouldAutorotateToInterfaceOrientation:
. En changeant quand il retourne oui, vous déterminez s'il va pivoter selon cette orientation. Cela ne permettra que l'orientation portrait normale.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
// Use this to allow upside down as well
//return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}
Notez que shouldAutorotateToInterfaceOrientation:
est obsolète dans iOS 6.0.
Pour ceux qui l'ont manquée: vous pouvez utiliser l'écran des paramètres du projet pour définir les orientations dans l'application (inutile de remplacer les méthodes dans chaque contrôleur):
C'est aussi simple que de basculer les orientations d'interface prises en charge. Vous pouvez trouver en cliquant sur votre projet dans le panneau de gauche> la cible de l'application> onglet Résumé.
Si vous souhaitez désactiver l'orientation paysage pour les deux iPhone et iPad.
Allez à Cibles et allez à l'onglet Général. Voir l'écran ci-dessous et désélectionnez paysage à gauche et paysage à droite.
Ici, dans ce cas, seul le mode paysage iPhone sera désactivé, pas pour iPad. Pour iPad, tous les modes sont activés. Si vous voulez sélectionner l’option de périphérique de Universel à iPad. Ça va ressembler à ça. Voir l'écran ci-dessous.
Désormais, vous devez désélectionner tous les modes sauf Portrait pour iPad. Voir ci-dessous capture d'écran.
Vous avez maintenant correctement désactivé tous les modes sauf Portrait pour tous les périphériques.
Swift 3 Si vous avez un navigateurContrôleur, sous-classez-le comme ceci (pour le portrait uniquement):
class CustomNavigationViewController: UINavigationController {
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return UIInterfaceOrientation.portrait
}
}
Le fait de supprimer la méthode shouldAutorotateToInterfaceOrientation
de votre classe fonctionne également. Si vous ne prévoyez pas de faire pivoter la machine, cela n'a aucun sens, moins il y a de code, mieux c'est.