iOS 9: Advertencia "Todas las orientaciones de la interfaz deben ser compatibles a menos que la aplicación requiera pantalla completa" para la aplicación universal


Estoy trabajando en una aplicación universal con todas las orientaciones en iPad y solo retrato en iPhone. La aplicación funciona bien con multitarea de pantalla dividida en iPad compatible con iOS 9, pero tengo esta advertencia:

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

Y mi aplicación no requiere pantalla completa. Solo está limitado a portrait en iPhone... ¿No debería estar bien? ¿Hay una manera de declarar Requiere Pantalla completa solo en iPhone?

Gracias de antemano

Por cierto, estoy usando Xcode 7.3.1

Author: Zaphod, 2016-05-11

5 answers

La solución para esto es usar " Teclas específicas del dispositivo": https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html#//apple_ref/doc/uid/TP40009254-SW9

Por lo tanto, sus valores plist se verían algo así como:

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

Cuando elimino la versión específica para iPad de la tecla UIRequiresFullScreen, pierdo la funcionalidad completa de pantalla dividida: solo" deslizar " está disponible porque eso no afecta el uso de mi aplicación de la pantalla completa del dispositivo.

Las casillas de verificación "Orientación del dispositivo" son para los valores plist predeterminados. La única forma en que no afectarían a la aplicación en el iPad es si hay un valor más específico en el plist, por lo tanto, un valor específicamente para iPad.

Cuando el sistema busca una clave en la información de tu app.archivo plist, elige la clave que es más específica para el dispositivo y la plataforma actual.

 33
Author: siburb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-26 01:17:56

Set UIRequiresFullScreen a en Info.plist .

introduzca la descripción de la imagen aquí

Disfruta...!!!

 49
Author: mital solanki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-16 07:05:40

De hecho, fue demasiado fácil... Es por eso que ni siquiera lo he probado:

Configuración

El ajuste Portraitpara La orientación del dispositivo no afecta la orientación del iPad.

Eso significa que la sección Device Orientation debe renombrarse iPhone Orientation, de hecho, con esa configuración, el iPhone solo es compatible con Portrait y el iPad es compatible con todos ellos. Y la pantalla dividida todavía está permitida, ya que no hemos comprobado Requires full screen.

PS: At menos en Xcode 8.3.1, no lo he probado en Xcode 7.x

 7
Author: Zaphod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-10 12:52:23

Para su caso puede utilizar: UISupportedInterfaceOrientations~iphone.

Cambiar la sección UISupportedInterfaceOrientations en Info.plist a:

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

Esta combinación no produce advertencias.

 0
Author: tier777,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-04 14:14:04

Vaya a la pestaña Ubicaciones desde las Preferencias, busque la carpeta de datos derivados del proyecto y elimine los archivos relacionados con el proyecto.

 -2
Author: OrdoDei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-09 11:05:46