web-dev-qa-db-fra.com

iOS 9: Avertissement "Toutes les orientations d'interface doivent être prises en charge, sauf si l'application requiert le plein écran" pour une application universelle

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

42
Zaphod

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.

35
siburb

Définissez UIRequiresFullScreen sur YES dans Info.plist.

 enter image description here

Prendre plaisir...!!!

54
mital solanki

En fait, c'était trop facile ... C'est pourquoi je ne l'ai même pas essayé:

 Configuration

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

8
Zaphod

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.

0
tier777