online apple iphone xcode ios6

apple - iphone store



Nuevo nombre de imagen para iPhone 5 (6)

Con la retina hacemos imágenes con el @ 2x en el nombre. Veo dónde la imagen predeterminada tiene que ser predeterminada-568h @ 2x, pero este no parece ser el caso para otras imágenes. Me gusta si mi fondo es bg.png y [email protected] Intenté usar [email protected] pero eso no funciona. ¿Alguien puede decirme qué nombre deben tener las imágenes para admitir el iPhone 5?


No hay un nombre de imagen específico. Tener el valor predeterminado, 568h @ 2x, lanzará esa imagen en un iPhone 5 o iPod Touch 5G y habilitará el modo sin buzón. Después de eso, debe diseñar sus vistas para ser flexible. No hay un "nombre de imagen" especial ni nada por el nuevo tamaño.

Para su fondo, por ejemplo, probablemente debería utilizar una imagen que sea capaz de estirar o mosaico y tenerlo configurado correctamente antes de configurarlo.


No tiene un sufijo especial para iPhone 5 (pantalla de 4 "), solo el archivo predeterminado [email protected].

Aquí hay una macro para manejarlo:

// iPhone 5 support #define ASSET_BY_SCREEN_HEIGHT(regular, longScreen) (([[UIScreen mainScreen] bounds].size.height <= 480.0) ? regular : longScreen)

Uso: (nombres de activos - image.png, [email protected], [email protected])

myImage = [UIImage imageNamed:ASSET_BY_SCREEN_HEIGHT(@"image",@"image-568h")];


Para completar el contestador de Jason, yo propondría: ¿qué hay sobre anular la imagen de UIImage ? imageNamed: método para que suceda el sufijo "-568" al nombre de tu imagen? O agregue un nuevo método llamado resolutionAdaptedImageNamed: al UIImage quizás usando una categoría.

Si tengo un poco de tiempo en los próximos días, intentaré publicar el código para eso.

Precaución: no funcionará para las imágenes en los archivos Nib.


Si está utilizando Xcode 5, puede usar el catálogo de activos (consulte el uso de la documentación de Apple )

Una vez que se crea su catálogo de activos [ UIImage imagedNamed: @"your_image_set" ] imagen correcta en función del dispositivo.


También puede hacer una categoría para esto, solo haga la categoría siguiente.

UIImage+Retina4.h #import <UIKit/UIKit.h> #import <objc/runtime.h> @interface UIImage (Retina4) @end UIImage+Retina4.m #import "UIImage+Retina4.h" static Method origImageNamedMethod = nil; @implementation UIImage (Retina4) + (void)initialize { origImageNamedMethod = class_getClassMethod(self, @selector(imageNamed:)); method_exchangeImplementations(origImageNamedMethod, class_getClassMethod(self, @selector(retina4ImageNamed:))); } + (UIImage *)retina4ImageNamed:(NSString *)imageName { // NSLog(@"Loading image named => %@", imageName); NSMutableString *imageNameMutable = [imageName mutableCopy]; NSRange retinaAtSymbol = [imageName rangeOfString:@"@"]; if (retinaAtSymbol.location != NSNotFound) { [imageNameMutable insertString:@"-568h" atIndex:retinaAtSymbol.location]; } else { CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height; if ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f) { NSRange dot = [imageName rangeOfString:@"."]; if (dot.location != NSNotFound) { [imageNameMutable insertString:@"-568h@2x" atIndex:dot.location]; } else { [imageNameMutable appendString:@"-568h@2x"]; } } } NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageNameMutable ofType:@"png"]; if (imagePath) { return [UIImage retina4ImageNamed:imageNameMutable]; } else { return [UIImage retina4ImageNamed:imageName]; } return nil; } @end

Y puede verificar directamente usando Importar esta categoría como se ve a continuación donde no va a verificar 568 o una imagen normal

imgvBackground.image=[UIImage imageNamed:@"bkground_bg"];//image name without extantion


iPhone 5 no tiene una densidad de píxeles diferente, es la misma pantalla retina PPI que el iPhone 4 / 4S, solo tiene un tamaño de pantalla diferente. Las imágenes @ 2x se usarán en iPhone 5 y 4 / 4S.