2011-06-19 9 views
7

Entiendo cómo cargar imágenes programáticamente para mi aplicación desde una URL en lugar de empaquetarlas dentro de la aplicación, pero ¿cómo manejo el problema 1x frente a 2x? Puedo servir ambas versiones desde la fuente externa si es necesario, pero ¿cómo puedo manejar eso al configurar el UIImage?¿Cómo deben manejarse las imágenes retina/normal al cargar desde la URL?

+0

¿Usted intentó acaba de hacer referencia http://example.com/image.png pero en ese lugar la ubicación image & [email protected] archivos? – Luke

Respuesta

7

Estoy bastante seguro de que no puede cargar archivos de imagen @ 2x de forma remota de forma automatizada. Usted tendrá que probar para la visualización de la retina y luego obtener la imagen (s) apropiada, así:

UIImage *image; 
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2){ 
    // @2x 
    NSURL *imageURL = [NSURL URLWithString:@"http://www.example.com/images/[email protected]"]; 
    NSData * imageData = [NSData dataWithContentsOfURL:imageURL]; 
    image = [UIImage imageWithData:imageData]; 
} else { 
    // @1x 
    NSURL *imageURL = [NSURL URLWithString:@"http://www.example.com/images/yourImage.png"]; 
    NSData * imageData = [NSData dataWithContentsOfURL:imageURL]; 
    image = [UIImage imageWithData:imageData]; 
} 
UIImageView *yourImageView = [[UIImageView alloc] initWithImage:image]; 
+4

¿No debería establecer también 'contentScaleFactor' of' yourImageView' en '[[UIScreen mainScreen] scale]' like '[yourImageView setContentScaleFactor: [[UIScreen mainScreen] scale]]'? – Ali

Cuestiones relacionadas