2010-10-17 15 views
6

Secondo la iOS Reference Library:Risorse specifiche dei dispositivi di iPhone

In iOS 4.0 e versioni successive, è possibile per contrassegnare i file di risorse individuali come utilizzabile solo su un tipo specifico di dispositivo.

Questo significa che se si sta creando un app universale per dispositivi 3.X, e il 3.2 iPad in particolare, non è possibile utilizzare le risorse specifiche del dispositivo con le ~ipad e ~iphone sufixes?

In tal caso, è questo il modo corretto di gestire le risorse specifiche del dispositivo?

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

Eventuali ulteriori considerazioni che dovrei conoscere?

risposta

2

Sì, hai ragione, quella funzione non funziona sugli attuali iPad - iOS 3.2.

Come soluzione temporanea, ho creato una categoria in UIImage, quindi posso usarla come anImage = [UIImage mbImageNamed:@"MyImage.png"]. Il metodo di categoria mette semplicemente "~ iPad" prima del suffisso su iPad - codice simile al tuo.

Un'altra cosa brutta è che UIWindowControllers non carica i file xib a seconda del dispositivo. Ho creato una classe di base per tutte le mie finestre-controllori e caricare il XIB specifica 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

Tenete a mente che "~ ipad" e "~ iphone" sono case sensitive, e dovrebbe essere in minuscolo. Si consiglia di rispettare quando si chiama il metodo di categoria. –

Problemi correlati