La nueva pantalla del iPhone 5 tiene una nueva relación de aspecto y una nueva resolución (640 x 1136 píxeles).
¿Qué se requiere para desarrollar aplicaciones nuevas o de transición ya existentes al nuevo tamaño de pantalla?
¿Qué debemos tener en cuenta para hacer que las aplicaciones sean "universales" tanto para las pantallas antiguas como para la nueva relación de aspecto de pantalla ancha?
Si tiene una aplicación creada para iPhone 4S o anterior, se ejecutará en buzón en iPhone 5.
Para adaptar su aplicación a la nueva pantalla más alta, lo primero que debe hacer es cambiar la imagen de inicio a: [email protected]. Su tamaño debe ser 1136x640 (HxW). Sí, tener la imagen predeterminada en el nuevo tamaño de pantalla es la clave para permitir que su aplicación tome toda la pantalla del nuevo iPhone 5 .
(Tenga en cuenta que la convención de nomenclatura solo funciona para la imagen predeterminada. Nombrar otra imagen "[email protected]" no hará que se cargue en lugar de "[email protected]". Si necesita cargar imágenes diferentes para diferentes tamaños de pantalla, deberá hacerlo mediante programación).
Si tienes mucha suerte, eso podría ser ... pero con toda probabilidad, tendrás que dar algunos pasos más.
En el caso extremo (cuando ninguno de los anteriores es suficiente), diseñe los dos Xib y cargue el apropiado en el controlador de vista.
Para detectar el tamaño de la pantalla:
fuente
Lo único que realmente se debe hacer es agregar una imagen de inicio llamada "[email protected]" a los recursos de la aplicación y, en general, si tiene la suerte, la aplicación funcionará correctamente.
En caso de que la aplicación no maneje eventos táctiles, asegúrese de que la ventana de teclas tenga el tamaño adecuado. La solución es establecer el marco adecuado:
Existen otros problemas que no están relacionados con el tamaño de la pantalla al migrar a iOS 6. Lea las Notas de la versión de iOS 6.0 para más detalles.
fuente
A veces (para las aplicaciones previas al guión gráfico), si el diseño va a ser lo suficientemente diferente, vale la pena especificar un xib diferente según el dispositivo (vea esta pregunta ; deberá modificar el código para manejar el iPhone 5) en el viewController init, ya que ninguna cantidad de twiddling con máscaras de autoresizing funcionará si necesita gráficos diferentes.
Esto es útil para aplicaciones que se dirigen a versiones anteriores de iOS.
fuente
Aquí puede encontrar un buen tutorial (para MonoTouch, pero también puede usar la información para proyectos que no son MonoTouch):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6-hoy /
Cree una nueva imagen para su pantalla de presentación / predeterminada ( 640 x 1136 píxeles ) con el nombre " [email protected] "
En el simulador de iOS , vaya al menú Hardware -> Dispositivo y seleccione " iPhone (Retina de 4 pulgadas) "
Crear otras imágenes, por ejemplo, imágenes de fondo.
fuente
Es fácil migrar iPhone5 y iPhone4 a través de XIB .........
fuente
Resuelvo este problema aquí . Simplemente agregue el sufijo ~ 568h @ 2x a las imágenes y ~ 568h a las xib. No necesita más comprobaciones de tiempo de ejecución o cambios de código.
fuente
Agregué la nueva imagen de inicio predeterminada y (al revisar varias otras respuestas SE ...) me aseguré de que mis guiones gráficos tuvieran un tamaño automático y subvistas, pero la retina de 4 pulgadas todavía estaba en buzón.
Luego me di cuenta de que mi plist de información tenía una línea de pedido para " Iniciar imagen " establecida en " Default.png ", que por lo tanto eliminé y mágicamente no apareció el buzón. Con suerte, eso salva a alguien más la misma locura que soporté.
fuente
Supongo que no funcionará en todos los casos, pero en mi proyecto en particular me evitó la duplicación de archivos NIB:
En algún lugar
common.h
puede hacer estas definiciones en función de la altura de la pantalla:En su controlador base:
fuente
En un
constants.h
archivo puede agregar estas declaraciones de definición:fuente
Para determinar si su aplicación puede admitir iPhone 5 Retina, use esto: (Esto podría ser más robusto para devolver el tipo de pantalla, 4S Retina, etc., pero como está escrito a continuación, solo regresa si el iPhone admite iOS5 Retina como Si o no)
En un archivo común ".h" agregue:
En un archivo común ".m" agregue:
fuente
En primer lugar, cree dos xibs y adjunte todos los delegados, clase principal a la
xib
y luego puede poner en esta condición mencionada a continuación en suappdelegate.m
archivo enpuedes usarlo en cualquier lugar del programa dependiendo de tus requisitos, incluso en tus
ViewController
clases. Lo que más importa es que haya creado dosxib
archivos separados paraiphone 4(320*480) and iphone 5(320*568)
fuente
Pruebe el siguiente método en una clase singleton:
fuente
Puede usar la
Auto Layout
función y crear el diseño usando la resolución de pantalla del iPhone 5 y funcionará para los dispositivos de 4 "y 3.5", pero en este caso debe tener un conocimiento suficiente del administrador de diseño.fuente
La comprobación
bounds
con568
fallará en modo horizontal. El iPhone 5 se inicia solo en modo vertical, pero si desea admitir rotaciones, entonces la "verificación" del iPhone 5 también deberá manejar este escenario.Aquí hay una macro que maneja el estado de orientación:
El uso de la llamada 'Preferred Mode' es de otra publicación que leí hace unas horas, así que no se me ocurrió esta idea.
fuente
Primero muestra esta imagen. En esa imagen, muestra una advertencia para el soporte de Retina 4, así que haga clic en esta advertencia y haga clic en Agregar para que su pantalla de bienvenida Retina 4 agregue automáticamente su proyecto.
y después de usar este código:
fuente
Nunca me enfrenté a un problema con ningún dispositivo, ya que tenía una base de código para todos, sin ningún valor codificado. Lo que hago es tener la imagen de tamaño máximo como recurso en lugar de una para cada dispositivo. Por ejemplo, tendría uno para la pantalla de retina y lo mostraría como ajuste de aspecto para que sea visualizado como está en cada dispositivo. Llegando a decidir el marco del botón, por ejemplo, en tiempo de ejecución. Para esto utilizo el valor de% de la vista de patente, por ejemplo, si quiero que el ancho sea la mitad de la vista principal, tome el 50% de la vista principal y lo mismo se aplica para la altura y el centro.
Con esto ni siquiera necesito los xibs.
fuente
Puede usar esta definición para calcular si está usando el iPhone 5 según el tamaño de la pantalla:
luego use una
if
declaración simple :fuente
Peter, deberías echar un vistazo a Canappi, hace todo eso por ti, todo lo que tienes que hacer es especificar el diseño como tal:
A partir de ahí, Canappi generará el código objetivo-c correcto que detecta el dispositivo en el que se ejecuta la aplicación y usará:
Canappi funciona como Interface Builder y Story Board combinados, excepto que está en forma de texto. Si ya tiene archivos XIB, puede convertirlos para no tener que volver a crear toda la interfaz de usuario desde cero.
fuente
Puede verificar manualmente el tamaño de la pantalla para determinar en qué dispositivo está:
fuente
Puedes agregar este código:
fuente
scale
selector activadoUIScreen
y tendrá un caso en el que su código de "resolución estándar" no se ejecuta.Este es un código universal real, puede crear 3 guiones gráficos diferentes:
Configure el modo Universal de su proyecto, y configure su iPhone de historia principal con el storyboard iPhone5 y el ipad main con el storyboard objetivo de iPad, ahora agregue un nuevo objetivo de storyboard para iphone y modifique la resolución para iphone 4s o menos ahora implemente su AppDelegate.m
iPhone4 / 4s (es lo mismo para 3 / 3Gs) uno para iPhone5 y hace que el proyecto sea universal , con un nuevo objetivo de Storyboard para iPad, ahora en AppDelegate.m con el
didFinishLaunching
siguiente código:Entonces, ha creado una aplicación universal para iPhone 3 / 3Gs / 4 / 4s / 5 All gen de iPod y todo tipo de iPad
Recuerde integrar todos los IMG con
myImage.png
y[email protected]
fuente
Según yo, la mejor manera de lidiar con tales problemas y evitar un par de condiciones requeridas para verificar la altura del dispositivo, es usar el marco relativo para las vistas o cualquier elemento de UI que esté agregando a su vista, por ejemplo: si está agregando algún elemento de la interfaz de usuario que desee debe estar en la parte inferior de la vista o justo encima de la barra de pestañas, luego debe tomar el origen y con respecto a la altura de su vista o con respecto a la barra de pestañas (si está presente) y también tenemos la propiedad de cambio de tamaño automático. Espero que esto funcione para tí
fuente
En lugar de usar un conjunto de condicionales, puede cambiar el tamaño de su vista automáticamente usando el tamaño de la pantalla.
En mi caso, quiero una vista que llene el espacio entre algunos campos de entrada en la parte superior y algunos botones en la parte inferior, por lo que se fijó la esquina superior izquierda y la variable inferior derecha según el tamaño de la pantalla. Mi aplicación llena la vista de imagen con la foto tomada por la cámara, así que quiero todo el espacio que pueda obtener.
fuente
Si necesita convertir una aplicación ya existente a universal, debe seleccionar el archivo xib correspondiente-> mostrar Utilidades-> Mostrar inspector de tamaño.
En el inspector de tamaño puede ver el tamaño automático, al usar esta herramienta puede convertir a la aplicación iOS existente.
fuente
Con xCode 5, seleccione "Migrar a Catálogo de activos" en Proyecto> General.
Luego use "Mostrar en el buscador" para encontrar su imagen de inicio, puede editarla ficticiamente para que sea 640x1136, luego arrástrela al catálogo de activos como se muestra en la imagen a continuación.
Asegúrese de que la sección R7 de iOS7 y iOS6 tenga una imagen de 640x1136. La próxima vez que inicie la aplicación, las barras negras desaparecerán y su aplicación usará una pantalla de 4 pulgadas
fuente
Vale la pena notarlo: en el nuevo Xcode, debe agregar este archivo de imagen [email protected] a los activos
fuente
Utilizar el
Auto Layout
función para vistas. Se ajustará automáticamente a todas las resoluciones.Cree dos xib para un controlador que tenga un nombre de controlador con sufijo ya sea ~ iphone o ~ ipad. En el momento de la compilación, Xcode tomará la xib correcta según el dispositivo.
Utilice clases de tamaño, si desea crear un solo xib para iPhone y iPad, si la vista es lo suficientemente simple como para transferir a iPhone y iPad.
fuente
Hay un pequeño problema al probar tanto en dispositivos iOS como en iOS Simulator. Parece que el simulador (XCode 6.0.1) proporciona valores conmutados para ancho y alto en
[[UIScreen mainScreen] bounds].size
según la orientación del dispositivo.Por lo tanto, esto podría ser un problema al determinar el tamaño de pantalla físico correcto. Este código también ayuda a distinguir todo el 2014. Generaciones de modelos de iPhone:
También se puede cambiar fácilmente para distinguir, por ejemplo, iPhone6 de iPhone6 +.
fuente
Sugeriría usar Autoresizing Mask en sus aplicaciones de acuerdo con su interfaz de UI, ahorra muchos problemas y es mejor que hacer diferentes UI para pantallas de iPhone 4 y 5.
fuente