2009-04-01 5 views

risposta

182

Se si dispone già di un IBOutlet su UIImageView, tutto ciò che si deve fare è catturare 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://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]]; 

o

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

Una volta che si dispone di un'immagine è quindi possibile impostare UIImageView:

[imageView setImage:image]; 

La linea di cui sopra assume IMAGEVIEW è il vostro IBOutlet.

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

P.S. Gestione della memoria non inclusa.

+1

grazie, ma non funziona :( ho rimosso l'immagine nel generatore di interfaccia in modo che UIImageView sia vuoto. quindi l'ho implementato nel metodo viewDidLoad. Ma non succede nulla. Il nome dell'immagine è corretto al 100%. L'ho anche assegnato con setImage alla presa. Qualcos'altro che posso provare? – Thanks

+3

Probabilmente non hai collegato IBOutlet al riferimento ViewController in IB. Verifica che l'immagine si trovi nella cartella Risorse. – Jordan

+0

Non sono sicuro delle regole necro/impatto su SO, ma so che questo mi ha aiutato a risolvere il mio problema. Sto usando iOS v5.1, xcode 4.3.2 – Jake

9

Seguendo il consiglio di Jordan (che dovrebbe funzionare in realtà), cercare di impostare l'UIImageView per essere visibile:

[imageView setHidden: NO]; 

e anche - non dimenticare di allegare al UIView principale:

[mainView addSubview: imageView]; 

e per portare in primo piano:

[mainView bringSubviewToFront: imageView]; 

speranza che unisce tutti questi passaggi vi aiuterà solv e il mistero.

29

questo ha lavorato per me

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

assicurarsi che l'ImageView è dichiarato correttamente nel file h ed è collegata con l'elemento IB.

16

Per le persone che potrebbero cercare su Google questo tentativo di risolvere il problema, ricordarsi di dichiarare correttamente la proprietà nel file di intestazione e di sintetizzare UIImageView nel file di implementazione ... Sarà difficile da impostare l'immagine a livello di codice senza metodi getter e setter.

#import <UIKit/UIKit.h> 

@interface YOURCONTROLLERNAME : UIViewController { 
    IBOutlet UIImageView *imageToDisplay; 
} 

@property (nonatomic, retain) IBOutlet UIImageView *imageToDisplay; 

@end 

e poi nel vostro .m:

@implementation YOURCONTROLLERNAME 

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

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

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

Grazie! Essendo nuovo per xcode e iphone in generale mi mancava il tuo YOURCONTROLLER prima di imageToDisplay. – Opy

37

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 della vista di prova ha un "IMAGEVIEW" wired da un pennino, questo probabilmente non funzionerà:

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

ma questo sarà:

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

Il mio problema è che ho ho provato a cambiare l'immagine in un altro thread. Ho fatto così:

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

chiamata con:

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

Sì, questo bit me ... di nuovo ... Posso anche usare 'dispatch_async (dispatch_get_main_queue(),^{backgroundImage.image = [UIImage imageNamed: @" img.png "];})' – Dex

2
UIColor * background = [[UIColor alloc] initWithPatternImage: 
    [UIImage imageNamed:@"anImage.png"]]; 

self.view.backgroundColor = background; 
[background release]; 
+0

È lo stesso per immagine presente dallo sfondo di UIView o dalla proprietà dell'immagine di UIImageView? – voromax

7

Se si desidera impostare un'immagine per UIImageView programmazione quindi non dimenticate di aggiungere UIImageView come visualizzazione secondaria alla principale View.

E anche non 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]; 
22
imageView.image = [UIImage imageNamed:@"myImage.png"]; 
2

Questa domanda già avuto un sacco di risposte. Sfortunatamente nessuno ha funzionato per me. Quindi per il piacere di completare aggiungo quello 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 io uso imageWithContentsOfFile: in questo 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. ;-)

7

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://url/image.png")!)!) 
    } 

} 
4
myUIImageview.image = UIImage (named:"myImage.png") 
+1

Contrassegnato come qualità molto bassa. Si prega di migliorare. – Drew

+0

Puoi farlo espandendo su di esso. –

5

Non dimenticare di chiamare sizeToFit() dopo aver modificato l'immagine Se quindi si utilizza dimensioni di UIImageView per impostare UIScrollView contentSize e/o calcolo scala di zoom

let image = UIImage(named: "testImage") 
imageView.image = image 
imageView.sizeToFit() 
scrollView.contentSize = imageView.bounds.size 
0

Per impostare un'immagine del vostro uso IMAGEVIEW sotto la linea di codice,

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

copia l'immagine nel tuo progetto e quindi usa il codice sopra –

Problemi correlati