Nella mia cartella delle risorse iOS, ho le immagini:In che modo NSBundle pathForResource: ofType: and UIImage imageWithContentsOfFile: gestisce la scala e i modificatori del dispositivo?
foo~iphone.png
[email protected]~iphone.png
foo~ipad.png
[email protected]~ipad.png
io caricarli con:
NSString *fileName = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];
Sperimentalmente:
Su iPhone, filename
è /path/to/bundle/foo~iphone.png
, e sulla retina iPhone, carica la versione @2x
.
Sull'iPad, filename
è /path/to/bundle/foo~ipad.png
e sull'iPad retina viene caricata la versione @2x
.
Cioè, carica l'immagine che mi auguro, ma pathForResource
gestisce il modificatore di dispositivo e imageWithContentsOfFile
gestisce il modificatore di scala.
Mi piacerebbe sapere perché. Lo documentation di pathForResource
non dice nulla sui modificatori di dispositivo e lo documentation di imageWithContentsOfFile
non dice nulla sui modificatori di scala.
C'è una documentazione separata che indica esattamente cosa fa ciascuna funzione?
Quale valore è il tuo fileName stringa in attesa quando si imposta un bp sulla riga UIImage? In altre parole come fai a sapere che il ridimensionamento avviene all'interno di imageWithContentsOfFile? –
@MarkM, come ho detto, su iPhone, 'nomefile' è'/percorso/to/bundle/foo ~ iphone.png', quindi so che sta ottenendo solo il nome della versione non- @ 2x .Quando questo nome viene inserito in 'UIImage', ottengo la versione ad alta risoluzione. –