ios - modelo - Tratando con el tamaño de la pantalla del iPad Mini
ipad modelo a1822 (9)
Cree aplicaciones para la resolución del iPad 2. El nuevo iPad Mini no retina con una resolución de 1024x768, lo que significa que las aplicaciones que ya funcionaron en un iPad 1 o iPad 2 funcionan automáticamente en el iPad Mini.
El nuevo iPad Mini tiene un tamaño de pantalla de 7,9 pulgadas. ¿Tiene una pantalla Retina? ¿Escalará automáticamente xibs y storyboards existentes o tendremos que crear dos versiones de cada uno?
¿Lo tratamos de manera similar a como lidiamos con el iPhone 5?
¿Cómo crearía una definición o una condición para ver si el dispositivo ejecuta iPad Mini?
Creo que Phil Schiller (vicepresidente senior de Apple) lo dijo mejor en un evento de prensa para presentar el iPad Mini (aproximadamente a las 53:00 en el discurso inaugural)
¿Qué tamaño de pantalla elegimos y por qué? Y el equipo trabajó mucho para pensar sobre esto. Queremos un iPad que sea capaz de ejecutar todo ese asombroso software escrito para iPad sin que los desarrolladores tengan que hacer ningún trabajo ...
Luego continúa diciendo:
... Y los píxeles son aún más fáciles de recordar porque son exactamente iguales. El iPad original y el iPad 2 son 1024 por 768 y el nuevo iPad Mini es 1024 por 768. Eso significa que todo el software creado para iPad funciona sin cambios en el iPad Mini.
Entonces, en resumen y para responder a su pregunta, no, el iPad Mini no tiene una pantalla Retina, y no tiene que hacer ningún trabajo adicional. El iPad Mini utilizará el guión gráfico o xib que ya ha creado para iPads.
Entonces, en lo que respecta a la detección, no puedo encontrar nada para probar esto todavía (porque aún no se han lanzado), pero estaría dispuesto a apostar que lo siguiente arrojará "iPad Mini".
NSLog(@"%@",[[UIDevice currentDevice] model]);
EDITAR:
NSLog(@"/nMachine ID: %@/nModel: %@/nLocalized Model: %@",machineName(),[[UIDevice currentDevice] model],[[UIDevice currentDevice] localizedModel]);
NSString *machineName()
{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
En mi iPad Mini de 16GB (solo Wifi) esto devuelve:
ID de la máquina: iPad2,5
Modelo: iPad
Modelo localizado: iPad
Las aplicaciones funcionarán bien. Pero si tiene algunos elementos de UI muy pequeños. Es posible que desee volver a visitarlos debido a la reducción en el tamaño de la pantalla.
Las imágenes para ipad mini serán las mismas para ipad 1 y 2. Sin embargo, se recomienda utilizar imágenes de @ 2x para la pantalla Retina. Porque, una vez que su aplicación está en la tienda de aplicaciones, no puede evitar que las personas la descarguen en el ipad con pantalla Retina.
Entonces, en este punto del tiempo, tendrás que hacer imágenes tanto para la retina como para la no retina.
Programaticalmente, NO se requieren archivos xib separados para la pantalla de la retina ipad. Solo guarde [email protected] también para todos los recursos de imagen.
No tienes que hacer nada diferente. Debería funcionar automáticamente como lo menciona Apple. La resolución sigue siendo la misma que la del iPad.
Para detectar iPad Mini (cualquier modelo) estoy usando este código (probado en iOS 10.x):
- (BOOL)isIPadMini {
return [[UIDevice currentDevice].name hasPrefix:@"iPad Mini"];
}
Si el iPad Mini y el iPad no retina van a tener el mismo tamaño de pantalla, ¿no podrías usar algo como lo que se usa para determinar si la pantalla del dispositivo es un iPhone 5 o iPhone 4?
#define IS_WIDESCREEN5 ( [ [ UIScreen mainScreen ] bounds ].size.height == 568 )
#define IS_WIDESCREEN4 ( [ [ UIScreen mainScreen ] bounds ].size.height == 480 )
Por lo tanto, para iPad Mini y iPad sin retina, haga lo siguiente:
#define IS_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 512 )
y para iPad retina hacer:
#define IS_RETINA_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 1024 )
Esto debería diferenciar los dos tipos de pantallas y eludir la necesidad de identificar el modelo exacto para fines de escala. El método alternativo sería usar el diseño automático, sin embargo, tengo una mejor sensación de control sin él.
Espero que esto ayude con la segunda parte de tu pregunta. Buena suerte :)
Si su aplicación funciona en un iPad 1 o un iPad 2, funcionará como está en el nuevo iPad mini. No hay pantalla retina en el mini. Desde la perspectiva de una aplicación, es idéntico al iPad 2.
Editar: se le preguntó cómo determinar cuándo se está ejecutando una aplicación en un iPad mini. No hay una verificación API para esto. El tamaño de la pantalla no ayuda. UI_USER_INTERFACE_IDIOM()
no ayuda. Hasta que alguien realmente tenga uno, no hay forma de saber si el UIScreenMode pixelAspectRatio
es diferente (probablemente sea lo mismo que el iPad 2).
Esto deja solo una posibilidad: obtener la machine
de uname()
y codificar un cheque con este valor. Este nunca es un enfoque deseado. Y a partir de este escrito, no sabemos cuál será el valor. Tal vez iPad5, x suponiendo que el iPad de cuarta generación es iPad4, x .
Editar: Hasta ahora he visto un informe de que el iPad mini devuelve iPad2,5 (sí, eso es una coma de cinco), así como iPad2,6 y iPad2,7 para el nombre de la máquina.
iPad mini usa la misma resolución que los iPads que no son retina, iOS usará 1x gráficos. Consulte este enlace ... enlace