Je travaille sur une application universelle avec toutes les orientations sur iPad et uniquement portrait sur iPhone. L'application fonctionne bien avec le multitâche à écran partagé sur un iPad compatible iOS 9, mais j'ai l'avertissement suivant:
All interface orientations must be supported unless the app requires full screen
Et mon application ne nécessite pas le plein écran. C'est limité au portrait sur iPhone ... Ça ne devrait pas être ok? Existe-t-il un moyen de déclarer Nécessite le plein écran uniquement sur iPhone?
Merci d'avance
En passant, j'utilise Xcode 7.3.1
La solution consiste à utiliser des "clés spécifiques à un périphérique": https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html#//Apple_ref/ doc/uid/TP40009254-SW9
Vos valeurs plist ressemblent donc à quelque chose comme:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIRequiresFullScreen~ipad</key>
<false/>
Lorsque je supprime la version de la clé UIRequiresFullScreen
spécifique à l'iPad, je perds la fonctionnalité d'écran partagé à part entière. Seul le mode "glisser-déplacer" est disponible, car cela n'affecte pas l'utilisation de l'écran complet de l'appareil par mon application.
Les cases à cocher "Orientation du périphérique" correspondent aux valeurs par défaut de la pliste. La seule manière de ne pas affecter l'application sur l'iPad est de donner une valeur plus spécifique au plist, donc une valeur spécifique à l'iPad.
Lorsque le système recherche une clé dans le fichier Info.plist de votre application, il choisit la clé la plus spécifique du périphérique et de la plate-forme actuels.
En fait, c'était trop facile ... C'est pourquoi je ne l'ai même pas essayé:
Le réglage de Portrait
pour Orientation du périphérique n’a aucune incidence sur l’orientation de l’iPad.
Cela signifie que la section Device Orientation doit être renommée iPhone Orientation. En effet, avec cette configuration, l'iPhone ne prend en charge que Portrait
et l'iPad les prend en charge. Et l'écran partagé est toujours autorisé car nous n'avons pas encore coché Requires full screen
.
PS: Au moins sur Xcode 8.3.1, je ne l’ai pas testé sur Xcode 7.x
Pour votre cas, vous pouvez utiliser: UISupportedInterfaceOrientations ~ iphone.
Remplacez la section UISupportedInterfaceOrientations dans Info.plist par:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~iphone</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
Cette combinaison ne produit aucun avertissement.