Comment faire pivoter l'orientation par programmation dans Swift?
J'ai essayé le suivant:
UIDevice.currentDevice().setValue(UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation")
sur
viewWillAppear
mais il ne fonctionne pas. Comment puis-je tourner mon écran sur viewWillAppear?
Mise à JOUR
J'utilise le code suivant pour le verrouillage de l'orientation:
var shouldRotate = true
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
if shouldRotate == true {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
} else {
return Int(UIInterfaceOrientationMask.LandscapeLeft.rawValue)
}
}
Swift 4.0
private func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
if shouldRotate == true {
return Int(UIInterfaceOrientationMask.portrait.rawValue)
} else {
return Int(UIInterfaceOrientationMask.landscapeLeft.rawValue)
}
}
et dans mon PREMIER contrôleur de viewWillAppear j'ai mis:
if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
appDelegate.shouldRotate = true
}
dans mon DEUXIÈME contrôleur:
if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
appDelegate.shouldRotate = false
}
donc, quand j'ai le dos à partir de la DEUXIÈME contrôleur à la PREMIÈRE:
Je le faire pivoter à gauche de ne pas tourner, tourner à droite - rien, tourner à gauche, encore une fois - qu'il tourne.
Comment puis-je résoudre ce problème?
OriginalL'auteur Orkhan Alizade | 2015-09-02
Vous devez vous connecter pour publier un commentaire.
Pour modifier l'orientation par programmation dans swift 3, utiliser de la manière suivante:
Vous pouvez utiliser les orientations, les
1. portrait
2. portraitUpsideDown
3. landscapeLeft
4. landscapeRight
selon la documentation d'apple, c'est l'une des méthode pour changer l'orientation de l'appareil. pour plus de détails, consultez le developer.apple.com/documentation/uikit/uideviceorientation
vous m'avez sauvé de l'homme. ils ne vont pas à me mettre le feu maintenant!
OriginalL'auteur Ram Madhavan
Vous pouvez remplacer
UIViewController.supportedInterfaceOrientations()
plutôt que de déclencher la rotation dansviewWillAppear
Pour Xcode 7
Pour Xcode 6
Et assurez-vous que les orientations souhaitées sont activées dans les paramètres de projet.
Il a été Xcode 7 de la syntaxe, désolé
UIInterfaceOrientationMask
n'est pas convertible en Int erreuressayez
return Int(UIInterfaceOrientationMask.Landscape.rawValue)
il fonctionne, mais se bloque avec
terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [myapp.SecondViewController shouldAutorotate] is returning YES'
OriginalL'auteur Quanlong
Swift 4:
Etape 1:
Dans Appdelegate - Déclarer
deviceOrientation
var qui estportrait
par défautÉtape 2:
Dans certaines ViewController écrire ce changement d'orientation -
OriginalL'auteur Jack
Edit:
Pouvez modifier cela pour mettre en œuvre n'importe quelle combinaison des orientations.
Dans AppDelegate:
LandscapeLeftViewController
- Vue-contrôleur est enfermé dans landscapeLeft orientation
LandscapeRightViewController
- Vue-contrôleur est enfermé dans landscapeRight orientation
Tout autre point de vue, les contrôleurs sont verrouillés en orientation portrait. Encore une fois, de le modifier pour mettre en œuvre une combinaison de verrouillé les orientations que vous souhaitez.
OriginalL'auteur Damon