Comment autoriser mon application universelle écrite dans Swift sur iOS 8.3 SDK à prendre en charge uniquement le mode portrait sur iPhone, mais les modes portrait et paysage sur iPad?
Je sais que dans le passé, cela a été fait dans AppDelegate. Comment pourrais-je faire cela à Swift?
Vous pouvez le faire par programme, ou mieux encore, vous pouvez simplement éditer Info.plist de votre projet (ce qui devrait être plus pratique, puisqu'il s'agit d'une configuration globale de périphérique).
Ajoutez simplement la touche "Orientations d'interface prises en charge (iPad)"
Vous pouvez le faire par programme
override func shouldAutoRotate() -> Bool {
if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
return true
}
else {
return false
}
}
et alors
override func supportedInterfaceOrientations() -> Int {
return UIInterfaceOrientation.Portrait.rawValue
}
ou toute autre orientation de rotation que vous souhaitez avoir par défaut.
Cela devrait détecter si votre appareil est un iPad et ne permettre la rotation que sur cet appareil.
EDIT: Depuis que vous voulez seulement portrait sur iPhone,
override func supportedInterfaceOrientations() -> Int {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return UIInterfaceOrientation.Portrait.rawValue
}
else {
return Int(UIInterfaceOrientationMask.All.rawValue)
}
}
Je sais que dans le passé, cela a été fait dans AppDelegate. Comment pourrais-je faire cela à Swift?
Le langage que vous utilisez ne change pas l'architecture de l'application. Vous faites cela dans Swift de la même manière que dans Objective-C, c’est-à-dire en implémentant:
optional func application(_ application: UIApplication,
supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int
dans votre application délégué.
Je ne sais pas si la réponse de Chris fonctionne simplement en copiant/collant la touche "Orientations d'interface prises en charge (iPad)"; probablement pas à en juger par la source XML de info.plist
. pour obtenir différents supports d’orientation. vous pouvez ouvrir la source XML info.plist
et la modifier comme suit:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
Et il y a une approche facile de l'interface utilisateur xcode. Accédez aux paramètres de votre projet. sélectionnez votre cible dans l'onglet "Général", puis dans la section "Informations de déploiement", vous pouvez d'abord sélectionner iphone/ipad, marquer les orientations de périphérique que vous souhaitez prendre en charge séparément pour chaque périphérique, puis les changer en "Universel". il générera le code xml ci-dessus sous le capot .
l'option "Universel" indique ici les sélections courantes entre iPhone et iPad.
Si vous souhaitez définir ceci pour un ViewController spécifique (autoriser tout sur iPad mais uniquement portrait sur iPhone) dans Swift 4:
override var supportedInterfaceOrientations:UIInterfaceOrientationMask {
return UIDevice.current.userInterfaceIdiom == .pad ? UIInterfaceOrientationMask.all : UIInterfaceOrientationMask.portrait
}