Appareil de réglage de l'orientation de Swift iOS
Je suis en train de travailler sur une swift app pour iPhone. Il y a un modal vue dans mon application que je veux seulement être en mode portrait.
Ma question est, comment puis-je par programme vigueur le téléphone pour ne pas permettre la rotation? En d'autres termes, je suis à la recherche d'un code qui ne permettra pas à un modal affichage en mode paysage (tournant sur le portrait de verrouillage de la rotation).
C'est juste pour 1 modale de vue, donc je ne peux pas désactiver la rotation de l'ensemble de l'application, sinon, je voudrais juste désactiver la rotation tout à fait.
J'ai trouvé le code dans ma recherche ici
Mais c'est en objective-C, dans le cas qui aide. Merci!
- C'est une réponse que de résoudre votre problème et d'autres questions liées: stackoverflow.com/questions/37983846/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez coller ces méthodes dans le ViewController de chaque point de vue qui doit être le portrait:
UIInterfaceOrientation
àInt
. C'est unUInt
valeur et la version actuelle de Swift exige maintenant la fonte..rawValue
.UIInterfaceOrientationMask
au lieu deUIInterfaceOrientation
true
deshouldAutorotate()
.Salut pour LandscapeLeft et LandscapeRight (mise à Jour Swift 2.0)
Et vous avez cette info
Et UIController
Pour PortraitUpsideDown et de l'utilisation Portrait que
Message de la France, Joyeux Noël !
Edit :
Autre solution :
Swift 3
L'Orientation de la rotation est plus compliqué si une-vue-contrôleur est intégré dans UINavigationController ou UITabBarController la navigation ou la barre d'onglet contrôleur prend le pas et prend les décisions sur l'autorotation et pris en charge orientations.
Utiliser les extensions suivantes sur UINavigationController et UITabBarController de sorte que la vue des contrôleurs qui sont incorporés dans l'un de ces contrôleurs d'arriver à rendre les décisions:
UINavigationController extension
UITabBarController extension
Maintenant, vous pouvez remplacer la supportedInterfaceOrientations, shouldAutoRotate et preferredInterfaceOrientationForpresentation dans la vue du contrôleur que vous souhaitez verrouiller sinon, vous pouvez laisser de côté les remplacements dans d'autres contrôleurs de vue que vous souhaitez hériter de l'orientation par défaut le comportement spécifié dans votre application plist.
De verrouillage d'Orientation Spécifique
Désactiver La Rotation
Changement Préféré Interface D'Orientation Pour La Présentation
Code ci-dessus peut ne pas fonctionner en raison de la possibilité, si votre vue-contrôleur appartient à une manette de navigation. Si oui, alors il doit obéir aux règles de la manette de navigation, même si il a une orientation différente des règles d'elle-même. Une meilleure approche serait de laisser la vue contrôleur de décider pour lui-même et la manette de navigation utilisera la décision de la partie supérieure la plus-vue-contrôleur.
Maintenant à l'intérieur de votre vue-contrôleur, nous pouvons
Espère que cela aide.
Grâce
Cela va désactiver la rotation automatique de l'affichage:
Mise à jour
Si l'application est en mode paysage et vous montrer un point de vue qui doit être montré en mode portrait, ceci permettra à l'application de modifier son orientation portrait (bien sûr, lorsque le dispositif va être mis en rotation à une telle orientation).
Si quelqu'un veut la réponse, je pense que je viens de recevoir il. Essayez ceci:
Espère que cela aide !
EDIT :
À force de rotation, utilisez le code suivant :
Il fonctionne pour iOS 7 & 8 !
Remarque: Cette méthode permet la rotation d'un ensemble de l'application.
OU
Faire un ParentViewController pour UIViewControllers dans un projet
(L'Héritage De La Méthode).
Associer chaque vue du contrôleur de contrôleur de parent comme UIappViewController.
Pour Swift 3, iOS 10
Cependant, il y a un bug avec la mise en
shouldAutorotate
ne fonctionne pas sur iOS 9 actuellement.En info.fichier plist , changer les orientations que vous souhaitez dans "prise en charge de l'interface de l'orientation".
Dans swift, la façon de prendre en charge les fichiers->info.plist->appui à l'interface de l'orientation.
J'ai été mal toute la matinée pour obtenir UNIQUEMENT paysage gauche/droite pris en charge correctement. J'ai découvert quelque chose de vraiment gênant, bien que l'onglet "Général" vous permet de désélectionner "Portrait" pour l'orientation du périphérique, vous devez éditer le fichier plist lui-même à désactiver Portrait et PortraitUpsideDown INTERFACE orientations - c'est la dernière touche de la plist: "prise en charge de l'Interface Orientations".
L'autre chose, c'est qu'il semble que vous devez utiliser le "masque" versions des énumérations (par exemple, UIInterfaceOrientationMask.LandscapeLeft), et pas seulement l'orientation. Le code que ai eu de travail pour moi (dans mon principal viewController):
Faire de cette combinaison de plist changements et le code est le seul moyen que j'ai pu pour qu'il fonctionne correctement.
Plus Rapide-comme version:
UINavigationController
de Vivek Parihar//Swift 2
Deux suggestions avec @Vivek Parihar la solution :
Si nous présentons tout viewController nous devrions vérifier néant pour “visibleViewController” dans navigationController extension
Si Nous sommes à l'aide de toute la fiche d'action pour le présent et l'utilisateur fait pivoter mis à l'envers, Votre fiche action sera ouverte du bord supérieur de l'écran :P, pour résoudre ce problème, nous devrions prendre le Portrait uniquement
}
Swift 2.2
Mon humble contribution (Xcode 8, Swift 3):
... sur l'AppDelegate. Tous les crédits pour Gandhi Mena: http://www.jairobjunior.com/blog/2016/03/05/how-to-rotate-only-one-view-controller-to-landscape-in-ios-slash-swift/
De ios 10.0 nous avons besoin de
set { self.orientations = newValue }
pour l'établissement de l'orientation, assurez-vous que le paysage de la propriété est activée dans votre projet.Swift 4:
La réponse la plus simple, dans mon cas, d'avoir à assurer une intégration tutoriel point de vue était en mode portrait uniquement:
Eezy-peezy.