2016-05-11 16 views
22

Ich arbeite an einer universellen App mit alle Orientierungen auf iPad und nur Porträt auf iPhone. Die App funktioniert gut mit Split-Screen-Multitasking auf iOS 9 kompatibel iPad, aber ich habe diese Warnung:iOS 9: Warnung "Alle Schnittstellenausrichtungen müssen unterstützt werden, es sei denn, die App erfordert Vollbild" für Universal-App

All interface orientations must be supported unless the app requires full screen 

Und meine App erfordert keine Vollbild. Es ist nur auf das Portrait auf dem iPhone beschränkt ... Sollte es nicht ok sein? Gibt es eine Möglichkeit zu erklären Benötigt Vollbild nur auf dem iPhone?

Vielen Dank im Voraus

Durch die Art und Weise bin ich mit Xcode 7.3.1

+0

dieser anwser kann Ihnen helfen [http: // stackoverflow.com/questions/33058829/update-to-xcode-7-0-1-and-project-now-has-problems] (http://stackoverflow.com/questions/33058829/updated-to-xcode-7-0 -1-and-project-now-has-problems) –

+0

Leider brauche ich die App, um Splitscreen auf iPad zu unterstützen, aber nur Portrait auf dem iPhone ... – Zaphod

Antwort

23

Die Lösung hierfür ist "Device Specific Keys" zu verwenden: https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html#//apple_ref/doc/uid/TP40009254-SW9

Ihre plist Werte daher würde in etwa so aussehen:

<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/> 

Wenn ich die iPad spezifische Version des UIRequiresFullScreen Schlüssels zu entfernen, ich die volle Split-Screen-Funktionalität verlieren - nur „gleitet über“ verfügbar ist, weil das nicht meine app nicht beeinträchtigt‘ s Verwendung des vollständigen Gerätebildschirms.

Die Kontrollkästchen "Geräteausrichtung" sind für die Standard-PLIST-Werte. Der einzige Weg, wie sie die App auf dem iPad nicht beeinflussen würden, wäre, wenn es einen spezifischeren Wert im Plist gibt, also einen Wert speziell für das iPad.

Wenn das System in der Info.plist-Datei Ihrer App nach einem Schlüssel sucht, wird der für das aktuelle Gerät und die Plattform spezifischste Schlüssel ausgewählt.

32

Set UIRequiresFullScreen zu JA in Info.plist.

enter image description here

Genießen ... !!!

+0

Nein, weil ich den geteilten Bildschirm brauche, um verfügbar zu sein. Aber danke für deine Antwort. – Zaphod

5

In der Tat war es zu einfach ... Deshalb habe ich es nicht einmal versucht:

Configuration

Portrait für Geräteausrichtung Einstellung hat keine Auswirkungen auf iPad Orientierung.

Das bedeutet, dass der Geräteausrichtung Abschnitt sollte iPhone Orientierung zwar umbenannt werden, mit dieser Konfiguration das iPhone unterstützt nur Portrait und das iPad unterstützt alle von ihnen. Und der Splitscreen ist weiterhin erlaubt, da wir Requires full screen nicht überprüft haben.

PS: Wenigstens auf Xcode 8.3.1, ich habe es nicht auf Xcode 7.x getestet

+0

Sind Sie sicher, dass das korrekt ist? Sie werden wahrscheinlich feststellen, dass es eine iPad-spezifische Version des Schlüssels "UISupportedInterfaceOrientations" in Ihrem Plist gibt. Siehe meine Antwort für Details. – siburb

+0

In der Tat sind die iPad-spezifischen Tasten jetzt direkt in der 'info.plist' gesetzt. Auch wenn Ihre Lösung genauer ist, ist diese immer noch gültig (zumindest bei neuen Projekten) – Zaphod