rotar rotacion plus pantalla girar gira funciona desactivar como apple ios cocoa-touch ios8 iphone-6 iphone-6-plus

ios - rotacion - Compatible con iPhone 6 y iPhone 6+ con diferentes imágenes de inicio/pantalla de inicio para orientaciones verticales y horizontales de iPad



rotar pantalla iphone 6 (3)

Lo que entendí de la documentación disponible y mis pruebas es que

  1. Todas las aplicaciones existentes en iPhone 6 y 6 Plus se ejecutan en modo de compatibilidad, lo que significa que las API (como [UIScreen mainScreen] .bounds) devolverán 320x568 (iPhone 5 / 5s) aún en nuevos iPhones (6/6 Plus) y toda la interfaz de usuario es escalado a la resolución correcta por iOS.

  2. Para admitir iPhone 6 / 6Plus, necesitamos crear xib para la pantalla de inicio (Archivo-> Nuevo-> Archivo-> Interfaz de usuario-> Pantalla de inicio) y configurar el archivo nib como "Iniciar archivo de pantalla".

  3. Podemos configurar diferentes imágenes para la pantalla de inicio dentro del archivo plumín de la pantalla de inicio en función de las clases de tamaño disponibles. [Básicamente combinaciones de Any, regular y compact]

  4. No hay forma de diferenciar entre iPad en vertical y iPad en orientación horizontal (ambos tienen un ancho normal y una altura normal). Además, no hay forma de diferenciar entre iPhone 4 / 4s y iPhone 5 / s.

¿Hay alguna manera de admitir el modo iPhone 6/6 Plus y también proporcionar diferentes imágenes de inicio para iPad en vertical y iPad en orientación horizontal?

Vea también el problema similar aquí Clases de tamaño de iOS 8 para iPad landscape


La solución del catálogo de activos no funciona para iPad Pro. Un enfoque diferente es usar vistas espaciadoras que posicionan la imagen correcta en el área visible y mueven la otra fuera de la pantalla (vea mi respuesta original a una pregunta similar here ).

No puede proporcionar diferentes imágenes para diferentes tamaños de pantalla (iPhone 4, iPhone X, ...), pero si desea diferentes imágenes para iPhone y iPad y diferentes imágenes para retrato y paisaje, esta solución es para usted.

Creé un proyecto de ejemplo en github si quieres probarlo. Funciona en iPad y iPhone.

Las restricciones importantes son

PortraitSpacer.width ≤ 5 × view.width PortraitSpacer.width ≤ 5 × view.height LandscapeSpacer.width ≥ 5 × view.width LandscapeSpacer.width ≥ 5 × view.height PositionSpacer.width = 5 × view.width

donde view.width y view.height son el ancho y alto de la vista principal.

PortraitSpacer posiciona la imagen vertical a 5 × min(view.width, view.height) , LandscapeSpacer posiciona la imagen horizontal a 5 × max(view.width, view.height) , y el PositionSpacer tiene el mismo ancho que PortraitSpacer en modo vertical y el mismo ancho que LandscapeSpacer en modo horizontal.

Multiplicamos todo por 5 para que las dos imágenes no se superpongan. Esto funciona para todos los dispositivos donde lo siguiente es cierto

5 × min(view.width, view.height) + max(view.width, view.height) ≤ 5 × max(view.width, view.height)

En modo horizontal esto significaría

5 / 4 ≤ view.width / view.height

que es el caso para todos los dispositivos actuales: iPad tiene la relación de aspecto más baja con 4: 3, que aún es mayor que 5: 4.

Luego, por supuesto, puede configurar imágenes por dispositivo (iPhone, iPad) en el catálogo de activos.


Los catálogos de activos funcionan actualmente en modo horizontal en iPhone en ios8 . Recibí esta respuesta del soporte de Apple:

"Hay un error que involucra imágenes de inicio en catálogos de activos y aplicaciones que se inician en horizontal en iPhone. Detrás de escena, el compilador del catálogo de activos genera la misma clave UILaunchImages [1] en la lista de información final que habría agregado cuando estaba especificación de imágenes de inicio manualmente. Una de las subclaves para cada imagen de inicio especificada bajo la tecla UILaunchImages es UILaunchImageOrientation, que siempre se configura en Vertical por el compilador del catálogo de activos. Esto tiene sentido porque las aplicaciones en iPhone siempre se inician en orientación vertical [2]. Sin embargo, el iniciador de aplicaciones iOS decide que, dado que su UISupportedInterfaceOrientations solo contiene UIInterfaceOrientationLandscapeLeft y UIInterfaceOrientationLandscapeRight, solo buscará imágenes de lanzamiento de paisaje bajo la clave UILaunchImages, de las cuales no encuentra ninguna.

Dado que no hay forma de forzar al compilador del catálogo de activos a especificar Landscape para la UILaunchImageOrientation de las imágenes de lanzamiento de iPhone, debe continuar especificando sus imágenes de lanzamiento editando la lista de propiedades de información para su aplicación como antes ".


No es necesario que use el archivo de la pantalla de inicio para hacer que su aplicación iPhone sea compatible con la resolución 6 / 6+. En su lugar, puede seleccionar el activo LaunchImage como Fuente de imágenes de lanzamiento.

Se puede encontrar en "Iconos de aplicaciones e imágenes de lanzamiento" en sus objetivos:

Si no hay ningún recurso de LaunchImage, simplemente vaya a su Images.xcassets, haga un clic secundario (clic derecho) y seleccione "Nueva imagen de lanzamiento":

El resultado es algo así:

Ahora solo arrastre y suelte sus imágenes para las resoluciones específicas que desea admitir y configure el activo LaunchImage creado como su fuente.

Espero eso ayude

Salud