Come posso cambiare l’immagine visualizzata in UIImageView a livello di programmazione?

Ho un IBOutlet su UIImageView , ma quando guardo il documento UIImageView , non riesco a vedere alcun suggerimento su come cambiarlo a livello di programmazione. Devo recuperare un object UIImage da UIImageView ?

Se hai già un IBOutlet su UIImageView, tutto ciò che devi fare è prendere un’immagine e chiamare setImage sul ricevitore (UIImageView). Di seguito sono riportati due esempi di acquisizione di un’immagine. Uno dal Web e uno aggiunto alla cartella Risorse in Xcode.

 UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://sofit.miximages.com/uiimageview/2915896504_a88b69c9de.jpg"]]]; 

o

 UIImage *image = [UIImage imageNamed: @"cell.png"]; 

Una volta che hai un’immagine puoi quindi impostare UIImageView:

 [imageView setImage:image]; 

La linea sopra presuppone che imageView sia il tuo IBOutlet.

Questo è tutto! Se vuoi divertirti, puoi aggiungere l’immagine a un UIView e quindi aggiungere transizioni.

Gestione della memoria PS non inclusa.

Si noti che il file NIB non collega tutti gli IBOutlet fino a quando la vista non è stata aggiunta alla scena. Se si collegano le cose manualmente (cosa che si potrebbe fare se le cose si trovano in NIB separati) è importante tenerle a mente.

Quindi se il mio controller di visualizzazione test ha un “imageView” cablato da un pennino, questo probabilmente non funzionerà:

  testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"]; [self.view addSubview:testCardViewController.view]; 

Ma questo:

  [self.view addSubview:testCardViewController.view]; testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"]; 

Questo ha funzionato per me

 [ImageViewName setImage:[UIImage imageNamed: @"ImageName.png"]]; 

Assicurati che ImageView sia dichiarato correttamente nel file .h e sia collegato con l’elemento IB.

 imageView.image = [UIImage imageNamed:@"myImage.png"]; 

Per le persone che potrebbero cercare su Google per risolvere il loro problema, ricorda di dichiarare correttamente la proprietà nel file di intestazione e di sintetizzare UIImageView nel tuo file di implementazione … Sarà difficile impostare l’immagine a livello di codice senza metodi getter e setter.

 #import  @interface YOURCONTROLLERNAME : UIViewController { IBOutlet UIImageView *imageToDisplay; } @property (nonatomic, retain) IBOutlet UIImageView *imageToDisplay; @end 

e poi nel tuo .m:

 @implementation YOURCONTROLLERNAME @synthesize imageToDisplay; //etc, rest of code goes here 

Da lì si dovrebbe andare bene usando qualcosa come il seguente per impostare l’immagine.

 [YOURCONTROLLER.imageToDisplay setImage:[UIImage imageNamed:value]]; 

Esempio in Swift :

 import UIKit class ViewController: UIViewController { @IBOutlet var myUIImageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() } @IBAction func myAction(sender: UIButton) { let newImg: UIImage? = UIImage(named: "profile-picture-name") self.myUIImageView.image = newImg } @IBAction func myAction2(sender: UIButton) { self.myUIImageView.image = nil self.myUIImageView.image = UIImage(data: NSData(contentsOfURL: NSURL(string: "http://sofit.miximages.com/uiimageview/image.png")!)!) } } 

Seguendo il consiglio di Jordan (che dovrebbe funzionare effettivamente), prova ad impostare UIImageView per essere visibile:

  [imageView setHidden: NO]; 

e anche – non dimenticarti di collegarlo al UIView principale:

 [mainView addSubview: imageView]; 

e per portare in primo piano:

 [mainView bringSubviewToFront: imageView]; 

Spero che la combinazione di tutti questi passaggi ti aiuterà a risolvere il mistero.

Il mio problema era che ho provato a cambiare l’immagine in un altro thread. Mi è piaciuto questo:

 - (void)changeImage { backgroundImage.image = [UIImage imageNamed:@"img.png"]; } 

Chiama con:

 [self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO]; 

Se si desidera impostare l’immagine su UIImageView a UIImageView di UIImageView , quindi non dimenticare di aggiungere UIImageView come UIImageView alla vista principale.

E inoltre non mi sono dimenticato di impostare ImageView Frame .

ecco il codice

 UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; myImage.image = [UIImage imageNamed:@"myImage.png"]; [self.view addSubview:myImage]; 

Non dimenticare di chiamare sizeToFit() dopo aver cambiato l’immagine se usi la dimensione di UIImageView per impostare UIScrollView contentSize e / o calcolare la scala dello zoom

 let image = UIImage(named: "testImage") imageView.image = image imageView.sizeToFit() scrollView.contentSize = imageView.bounds.size 
 myUIImageview.image = UIImage (named:"myImage.png") 
 UIColor * background = [[UIColor alloc] initWithPatternImage: [UIImage imageNamed:@"anImage.png"]]; self.view.backgroundColor = background; [background release]; 

Questa domanda aveva già molte risposte. Sfortunatamente nessuno ha funzionato per me. Quindi, per il gusto di completare, aggiungo ciò che mi ha aiutato:

Avevo più immagini con lo stesso nome, quindi le ho ordinate in sottocartelle. E ho avuto il percorso completo per il file immagine che volevo mostrare. Con un percorso completo imageNamed: (come utilizzato in tutte le soluzioni sopra) non ha funzionato ed era il metodo sbagliato.

Invece ora uso imageWithContentsOfFile: modo:

 self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName]; 

Non so, se qualcuno legge così lontano?

Se è così e questo ti ha aiutato: per favore vota. 😉

Per impostare l’immagine sul tuo imageView usa sotto la riga di codice,

 self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];