Comment faire NSBundle pathForResource:ofType: et UIImage imageWithContentsOfFile: échelle de poignée et de l'appareil modificateurs?

Dans mon iOS dossier de ressources, j'ai les images:

foo~iphone.png
foo@2x~iphone.png
foo~ipad.png
foo@2x~ipad.png

Je de les charger avec:

NSString *fileName = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];

Expérimentalement:

Sur l'iPhone, filename est /path/to/bundle/foo~iphone.png, et sur la rétine de l'iPhone, il charge le @2x version.

Sur l'iPad, filename est /path/to/bundle/foo~ipad.png, et sur la rétine d'iPad, il charge le @2x version.

Qui est, il charge l'image que j'avais de l'espoir, mais pathForResource les poignées de l'appareil modificateur, et imageWithContentsOfFile gère l'échelle de modificateur.

J'aimerais savoir pourquoi. Le la documentation de pathForResource ne dit rien à propos de l'appareil modificateurs, et la la documentation de imageWithContentsOfFile ne dit rien sur l'échelle des modificateurs.

Est-il séparé de la documentation qui indique précisément ce que chaque fonction?

Quelle est la valeur de votre chaîne de caractères contenant le nom de fichier lorsque vous définissez un bp sur le UIImage ligne? En d'autres termes, comment savez-vous la mise à l'échelle qui se passe à l'intérieur de la imageWithContentsOfFile?
comme je l'ai dit, sur l'iPhone, filename est /path/to/bundle/foo~iphone.png, donc je sais que c'est seulement à obtenir le nom de la non-@2x version. Lorsque ce nom est introduit dans UIImage, je reçois le haute résolution la version.

OriginalL'auteur Jesse Beder | 2012-06-18