2010-03-24 5 views
21

La mia app deve caricare un'immagine da un server http e visualizzarla in un UIImageView
Come posso farlo ??
Ho provato questo:
Programmazione Xcode iPhone: caricamento di un jpg in una UIImageView dall'URL

NSString *temp = [NSString alloc]; 
[temp stringwithString:@"http://192.168.1.2x0/pic/LC.jpg"] 
temp=[(NSString *)CFURLCreateStringByAddingPercentEscapes(
    nil, 
    (CFStringRef)temp,      
    NULL, 
    NULL, 
    kCFStringEncodingUTF8) 
autorelease]; 


NSData *dato = [NSData alloc]; 
dato=[NSData dataWithContentsOfURL:[NSURL URLWithString:temp]]; 
pic = [pic initWithImage:[UIImage imageWithData:dato]]; 

Questo codice è in viewDidLoad della vista, ma non viene visualizzato nulla! Il server funziona perché posso caricare file xml da esso. ma non riesco a mostrare quell'immagine!
Ho bisogno di caricare l'immagine a livello di programmazione perché deve cambiare a seconda del parametro passato! Grazie in anticipo. Antonio

+0

FYI: non c'è bisogno di aggiungere tag ai tuoi messaggi

+0

Il codice sembrare strano, stringwithString: è un metodo di classe, in modo sostanzialmente Penso che [stringwithString temp: @ "http: // 192.168.1.2x0/pic/LC.jpg "] non è valido. Hai provato a utilizzare solo dato = [NSData dataWithContentsOfURL: [NSURL URLWithString: @ "http: //192.168.1.2x0/pic/LC.jpg"]]? – zonble

+0

presume che l'immagine sia un'immagine nella tua classe - è un'assegnazione cosa vuoi fare? (pic = [pic initWithImage ...]) – KevinDTimm

risposta

82

Dovrebbe essere:

NSURL * imageURL = [NSURL URLWithString:@"http://192.168.1.2x0/pic/LC.jpg"]; 
NSData * imageData = [NSData dataWithContentsOfURL:imageURL]; 
UIImage * image = [UIImage imageWithData:imageData]; 

Una volta che hai la variabile image, si può buttare in una UIImageView via è image proprietà, vale a dire:

myImageView.image = image; 
//OR 
[myImageView setImage:image]; 

Se avete bisogno di fuggire caratteri speciali nella stringa originale, puoi fare:

NSString * urlString = [@"http://192.168.1.2x0/pic/LC.jpg" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
NSURL * imageURL = [NSURL URLWithString:urlString]; 
.... 

Se si sta creando il vostro UIImageView di programmazione, si fa:

UIImageView * myImageView = [[UIImageView alloc] initWithImage:image]; 
[someOtherView addSubview:myImageView]; 
[myImageView release]; 
+0

grazie mille non sapevo come funzionasse UIImageView! era così semplice! Grazie mille! –

+0

warning, dataWithContentsOfURL: non è asincrono ... potresti bloccare il thread principale qui giusto? – Goles

+0

Ho trovato immagini sfocate caricate da un url rispetto alla stessa immagine caricata localmente usando [self.imageView setImage: [UIImage imageNamed: @ "AKL.JPG"]]; –

3

Prova questa

NSURL *url = [NSURL URLWithString:@"http://192.168.1.2x0/pic/LC.jpg"]; 
NSData *data = [NSData dataWithContentsOfURL:url]; 
UIImageView *subview = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f,320.0f, 460.0f)]; 
[subview setImage:[UIImage imageWithData:data]]; 
[cell addSubview:subview]; 
[subview release]; 

tutto il meglio.

3

Questo è il codice vero e proprio.

UIImageView *myview=[[UIImageView alloc]init]; 

    myview.frame = CGRectMake(0, 0, 320, 480); 

    NSURL *imgURL=[[NSURL alloc]initWithString:@"http://soccerlens.com/files/2011/03/chelsea-1112-home.png"]; 

    NSData *imgdata=[[NSData alloc]initWithContentsOfURL:imgURL]; 

    UIImage *image=[[UIImage alloc]initWithData:imgdata]; 

    myview.image=image; 

    [self.view addSubview:myview]; 
3

È necessario caricare l'immagine sullo sfondo o la vista si blocca. Prova questo:

UIImage *img = [[UIImage alloc] init]; 

dispatch_async(dispatch_get_global_queue(0,0), ^{ 

    NSData * data = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:@"http://www.test.com/test.png"]; 
    img = [UIImage imageWithData: data]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     //PUT THE img INTO THE UIImageView (imgView for example) 
     imgView.image = img; 
    }); 
}); 
Problemi correlati