2010-10-17 13 views
6

Nach den iOS Reference Library:Gerätespezifische Ressourcen in iPhone

In iOS 4.0 und höher ist es möglich, einzelne Ressource-Dateien als verwendbar nur auf einem bestimmten Typ von Gerät zu markieren.

Bedeutet dies, dass, wenn Sie ein Universal-App für 3.X-Geräte erstellen, und das 3.2 iPad insbesondere nicht gerätespezifischen Ressourcen mit den ~ipad und ~iphone sufixes verwenden kann?

Wenn ja, ist dies der richtige Umgang mit gerätespezifischen Ressourcen?

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

Alle zusätzlichen Überlegungen, die ich wissen sollte?

Antwort

2

Ja, Sie haben Recht, diese Funktion funktioniert nicht auf aktuellen iPads - iOS 3.2.

Als Workaround habe ich eine Kategorie in UIImage erstellt, so kann ich es wie anImage = [UIImage mbImageNamed:@"MyImage.png"] verwenden. Bei der Kategoriemethode wird einfach "~ iPad" vor das Suffix auf dem iPad gesetzt - ähnlich wie bei Ihrem.

Eine weitere hässliche Sache ist, dass UIWindowControllers keine xib-Dateien je nach Gerät laden. Ich habe eine Basisklasse für alle meine Fenster-Controller erstellt und laden die iPad-spezifische XIB:

@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

Denken Sie daran, dass "~ ipad" und "~ iphone" Groß-und Kleinschreibung sind, und sollte Kleinbuchstaben sein. Vielleicht möchten Sie beim Aufruf Ihrer Kategoriemethode respektieren. –

Verwandte Themen