2009-04-01 22 views

Odpowiedz

182

Jeśli masz już IBOutlet do UIImageView, to wystarczy pobrać obraz i wywołać setImage na odbiorniku (UIImageView). Dwa przykłady chwytania obrazu znajdują się poniżej. Jeden z sieci i taki, który dodajesz do swojego folderu zasobów w Xcode.

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]]; 

lub

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

Po uzyskaniu obrazu można ustawić UIImageView:

[imageView setImage:image]; 

Linia powyżej zakłada ImageView to IBOutlet.

To wszystko! Jeśli chcesz mieć ochotę, możesz dodać obraz do UIView, a następnie dodać przejścia.

P.S. Zarządzanie pamięcią nie jest wliczone w cenę.

+1

dziękuję, ale to nie działa :( usunąłem obraz w konstruktorze interfejsów, aby UIImageView był pusty. następnie zaimplementowałem to w metodzie viewDidLoad. Ale nic się nie dzieje. Nazwa obrazu jest poprawna w 100%. Przypisałem mu również setImage do gniazdka. Coś jeszcze mogę spróbować? – Thanks

+3

Prawdopodobnie nie podłączyłeś IBOutlet do odwołania ViewController w IB. Sprawdź, czy obraz znajduje się w folderze Zasoby. – Jordan

+0

Nie jestem pewien, czy zasady necro/wpływ na SO, ale wiem, że to pomogło mi rozwiązać mój problem. Używam iOS v5.1, xcode 4.3.2 – Jake

9

Za radą Jordana (który powinien pracować właściwie), spróbuj ustawić UIImageView być widoczne:

[imageView setHidden: NO]; 

a także - nie zapomnij dołączyć go do głównego UIView:

[mainView addSubview: imageView]; 

i doprowadzić do przodu:

[mainView bringSubviewToFront: imageView]; 

Nadzieja łącząc wszystkie te czynności pomogą Ci rozp e tajemnica.

29

Ten pracował dla mnie

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

Upewnij się, że ImageView deklaruje odpowiednio w pliku .h i jest związany z elementem IB.

16

Dla osób, które mogą używać tego rozwiązania w celu rozwiązania problemu, należy pamiętać o prawidłowym zadeklarowaniu właściwości w pliku nagłówkowym i zsyntetyzowaniu UIImageView w pliku implementacyjnym ... Trudno będzie ustawić obraz programowo bez metod getter i setter.

#import <UIKit/UIKit.h> 

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

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

@end 

a następnie w .m:

@implementation YOURCONTROLLERNAME 

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

Stamtąd powinno być w porządku użyciu coś jak poniżej, aby ustawić obraz.

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

Dzięki! Będąc nowicjuszem w Xcode i na iPhone'ach brakowało mi YOURCONTROLLER przed imageToDisplay. – Opy

37

Należy zauważyć, że plik NIB nie łączy wszystkich IBOletów, dopóki widok nie zostanie dodany do sceny. Jeśli robisz to ręcznie (co możesz robić, jeśli wszystko jest w oddzielnych NIB-ach), ważne jest, aby o tym pamiętać.

Więc jeśli mój widok Test kontroler ma "ImageView" wired przez stalówki, to prawdopodobnie nie będzie działać:

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

Ale to będzie:

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

Moim problemem było to, że próbował zmienić obraz w innym wątku. Zrobiłem tak:

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

Połącz z:

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

Tak, to trochę mnie ... znowu ... Może również użyć '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

Czy to samo dotyczy obecny obraz według tła UIView lub właściwości obrazu UIImageView? – voromax

7

Jeśli chcesz ustawić obraz do UIImageView programowo następnie nie zapomnij dodać UIImageView jak podrzędny do głównego widoku.

A także nie zapomniałem ustawić ImageView Frame.

Oto kod

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

To pytanie już wiele odpowiedzi. Niestety nikt nie pracował dla mnie. W celu uzupełnienia dodam, co mi pomogło:

Miałem wiele zdjęć o tej samej nazwie - więc zamówiłem je w podfolderach. I miałem pełną ścieżkę do pliku obrazu, który chciałem pokazać. Pełna ścieżka imageNamed: (używana we wszystkich powyższych rozwiązaniach) nie działała i była niewłaściwą metodą.

Zamiast Teraz używam imageWithContentsOfFile: tak:

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

Nie wiem, czy ktoś czyta się tak daleko?

Jeśli tak, to pomogło: przeprowadź głosowanie. ;-)

7

przykład w 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

Oznaczone jako bardzo niskiej jakości. Popraw to. – Drew

+0

Możesz to zrobić, rozwijając go. –

5

Nie zapomnij zadzwonić sizeToFit() po zmianie wizerunku, jeśli następnie za pomocą wielkości od UIImageView ustawić UIScrollView contentSize i/lub obliczeniowe zoom

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

Aby ustawić obraz na korzystania ImageView poniżej linii kodu,

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

skopiuj obraz do projektu, a następnie użyj powyższego kodu –

Powiązane problemy