En mi carpeta de recursos IOS, tengo las imágenes:¿Cómo NSBundle pathForResource: ofType: y UIImage imageWithContentsOfFile: manejan los modificadores de báscula y dispositivo?
foo~iphone.png
[email protected]~iphone.png
foo~ipad.png
[email protected]~ipad.png
que cargarlos con:
NSString *fileName = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];
Experimentalmente:
En el iPhone, filename
es /path/to/bundle/foo~iphone.png
, y en la retina iPhone, carga la versión @2x
.
En el iPad, filename
es /path/to/bundle/foo~ipad.png
, y en la retina iPad, carga la versión @2x
.
Es decir, carga la imagen que espero, pero pathForResource
maneja el modificador del dispositivo, y imageWithContentsOfFile
maneja el modificador de escala.
Me gustaría saber por qué. El documentation de pathForResource
no dice nada sobre los modificadores del dispositivo, y el documentation de imageWithContentsOfFile
no dice nada sobre los modificadores de escala.
¿Hay documentación separada que indique con precisión qué hace cada función?
¿Qué valor ¿está sujetando su cadena fileName cuando establece un bp en la línea UIImage? En otras palabras, ¿cómo sabe que la escala está ocurriendo dentro de la imagenWithContentsOfFile? –
@MarkM, como dije, en el iPhone, 'filename' es'/path/to/bundle/foo ~ iphone.png', así que sé que solo está obteniendo el nombre de la versión que no es @ 2x. Cuando este nombre se ingresa en 'UIImage', obtengo la versión de alta resolución. –