2010-10-17 15 views
6

De acuerdo con la iOS Reference Library:Recursos específicos de los dispositivos de iPhone

En iOS 4.0 y posteriores, es posible para marcar los archivos de recursos individuales como utilizable sólo en un tipo específico de dispositivo.

¿Quiere decir esto que si va a crear una aplicación universal para dispositivos 3.x, y el 3,2 IPAD, en particular, no puede utilizar los recursos específicos del dispositivo con los ~ipad y ~iphone sufixes?

Si es así, ¿es esta la forma correcta de tratar con los recursos específicos del dispositivo?

UIImage* anImage; 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    anImage = [UIImage imageNamed:@"MyImage-iPad.png"]; 
} else { 
    anImage = [UIImage imageNamed:@"MyImage-iPhone.png"]; 
} 

¿Alguna consideración adicional que deba saber?

Respuesta

2

Sí, tienes razón, esa función no funciona en iPads actuales: iOS 3.2.

Como solución alternativa he creado una categoría en UIImage, así que puedo usarla como anImage = [UIImage mbImageNamed:@"MyImage.png"]. El método de la categoría simplemente pone "~ iPad" antes del sufijo en el iPad, código similar al tuyo.

Otra cosa fea es que los UIWindowControllers no cargan archivos xib según el dispositivo. He creado una clase base para todas mis ventanas-controladores y cargar el XI ter específico iPad:

@implementation MBPadAwareWindowController 
- (id)init 
{ 
    NSString *className = NSStringFromClass([self class]); 
    NSString *nibName = UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad ? className : [className stringByAppendingFormat:@"-iPad"]; 
    return [self initWithNibName:nibName bundle:nil]; 
} 
@end 
+0

Tenga en cuenta que "~ ipad" y "iPhone ~" mayúsculas y minúsculas, y deben estar en minúsculas. Es posible que desee respetar al llamar a su método de categoría. –

Cuestiones relacionadas