plus modelos caracteristicas apple iphone retina-display iphone-5

modelos - Imágenes para iphone 5 pantalla retina.



iphone se (5)

Actualmente estoy detectando si el dispositivo actual es un iPhone de 4 "de esta manera y funciona muy bien. Hth

- (BOOL)isiPhone5{ return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568.0); }

Lanzamiento del iPhone 5, con nuevo tamaño de pantalla y resolución.

Cuando usamos imágenes para iPhone 4 (retina), solo agregamos "@ 2x" al nombre de la imagen. ¿Alguien puede decirme si es posible agregar diferentes imágenes (fondos, botones, etc.) para la nueva pantalla del iPhone?

Y la segunda pregunta: ¿puedo tener en mi aplicación archivos XIB separados: para iPhone antiguo, iPhone nuevo (como para iPhone y iPad)?

¡Gracias!


Aquí hay una excepción de mi blog sobre este tema:

[UIImage imageNamed:] carga automáticamente @ 2x versiones de imágenes cuando se ejecuta en un dispositivo de retina. Desafortunadamente, imageNamed: NO cargará automáticamente -568h @ 2x versiones de imágenes cuando se ejecute en un iPhone 5.

A veces esto no importa, por ejemplo, los iconos y los gráficos de pantalla no completa probablemente sean los mismos en los iPhone 4 y 5. Sin embargo, si tiene imágenes de fondo de pantalla completa o imágenes de fondo de ancho / alto de barra de herramientas, etc. tener problemas. Es muy probable que sus imágenes de 480 alturas se estiren (y, como resultado, se vean horribles).

Puedes verificar manualmente el tamaño de la pantalla y cargar la imagen correcta como esta:

UIImage* myImage; CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height; if ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f) { myImage = [UIImage imageNamed:@"myImage-568h.png"]; } else { myImage = [UIImage imageNamed:@"myImage.png"]; }

Hay una forma de alterar UIImage imageNamed para que cargue automáticamente la imagen correcta. Vea el enlace de abajo para más detalles.

Más en: http://pervasivecode.blogspot.co.uk/2012/09/making-apps-work-on-iphone-5-screen-size.html

EDITE: @Sound Blaster y @GrizzlyNetch tienen razón, en el código debe usar imageNamed: @ "myImage-568h.png"] pero el nombre real del archivo debe ser [email protected]. Si no haces esto, entonces la escala es incorrecta, tal como dijeron.


EDITAR

CUIDADO, a partir de iOS8 UIScreen tenga en cuenta la orientación (verificar la altura puede devolver dos valores, la altura del retrato o la altura del paisaje, antes de que fuera solo la altura del retrato), pero xcassets es mejor que lo puedas ver aquí: Cómo se puede adaptar fondo del iphone?

EDICIÓN FINAL

Basándome en la respuesta de ben-clayton, creé una práctica categoría para administrar imágenes para iPhone 5. Gracias.

+ (UIImage *) imageForName:(NSString *)imageName { NSString *result = imageName; CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height; BOOL isIphoneFive = ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f); if (isIphoneFive) { NSString *imageNameWithoutExtension = [imageName stringByDeletingPathExtension]; NSString *extension = [imageName pathExtension]; result = [NSString stringWithFormat:@"%@-568h.%@",imageNameWithoutExtension, extension]; } return [UIImage imageNamed:result]; }


El iPhone 5 no presenta una nueva densidad de píxeles, por lo que solo puede usar todas las imágenes de retina que usó antes.

Todo lo que necesita para admitir la nueva resolución del iPhone 5 es hacer que las vistas suban la ventana. Para la mayoría de la vista, como tableview y scrollview esto no presentará ningún problema.

Tampoco es necesario agregar un archivo XIB adicional para la nueva resolución, que tampoco es compatible.

Solo agrega [email protected] a tu paquete de aplicaciones para que iOS 6 haga que la aplicación ocupe el espacio extra disponible en el iPhone 5.

Todos los controles nativos, como la barra de pestañas, se comportarán como usted esperaría.

Si desea admitir iOS4.3 y 5. * en su aplicación, asegúrese de que la Use Autolayout en la configuración de la punta (primera pestaña en el generador de interfaces) esté desactivada.

A continuación, asegúrese de configurar correctamente la vista autoresizingMask


if ([UIScreen mainScreen] .scale == 2.f && screenHeight == 568.0f) Las comparaciones exactas de números de punto flotante no son una buena idea en ningún idioma debido a errores de redondeo en la forma en que se almacenan en la memoria. Por ejemplo, no puede garantizar que 568.0f no se almacene como 567.9999999 o 568.0000001. Mucho más seguro es utilizar un rango, o en este caso sería suficiente con ScreenHeight> 567.1f. Sospecho que incluso el iPhone no admite físicamente fracciones de píxeles.