Odpowiedzi:
Jeśli masz już IBOutlet do UIImageView, wszystko, co musisz zrobić, to pobrać obraz i wywołać setImage na odbiorniku (UIImageView). Poniżej znajdują się dwa przykłady chwytania obrazu. Jeden z sieci Web i jeden, który dodajesz do folderu Zasoby 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"];
Gdy masz już obraz, możesz ustawić UIImageView:
[imageView setImage:image];
Powyższa linia zakłada, że imageView jest Twoim IBOutlet.
Otóż to! Jeśli chcesz mieć ochotę, możesz dodać obraz do UIView, a następnie dodać przejścia.
Brak zarządzania pamięcią PS.
Zwróć uwagę, że plik NIB nie łączy wszystkich IBOutletów, dopóki widok nie zostanie dodany do sceny. Jeśli podłączasz rzeczy ręcznie (co możesz zrobić, jeśli rzeczy są w oddzielnych NIB), należy o tym pamiętać.
Więc jeśli mój kontroler widoku testowego ma „imageView” połączony ze stalówką, to prawdopodobnie nie zadział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"];
imageView.image = [UIImage imageNamed:@"myImage.png"];
Z myślą o osobach, które szukają w Google, aby spróbować rozwiązać swój problem, pamiętaj, aby poprawnie zadeklarować właściwość w pliku nagłówkowym i zsyntetyzować UIImageView w pliku implementacji ... Trudno będzie ustawić obraz programowo bez metody pobierające i ustawiające.
#import <UIKit/UIKit.h>
@interface YOURCONTROLLERNAME : UIViewController {
IBOutlet UIImageView *imageToDisplay;
}
@property (nonatomic, retain) IBOutlet UIImageView *imageToDisplay;
@end
a następnie w swoim .m:
@implementation YOURCONTROLLERNAME
@synthesize imageToDisplay;
//etc, rest of code goes here
Stamtąd powinno być dobrze, używając czegoś podobnego do następującego, aby ustawić swój obraz.
[YOURCONTROLLER.imageToDisplay setImage:[UIImage imageNamed:value]];
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")!)!)
}
}
Postępując zgodnie z radą Jordana (która w rzeczywistości powinna działać), spróbuj ustawić UIImageView tak, aby był widoczny:
[imageView setHidden: NO];
a także - nie zapomnij dołączyć go do głównego UIView:
[mainView addSubview: imageView];
i przynieść na przód:
[mainView bringSubviewToFront: imageView];
Mam nadzieję, że połączenie wszystkich tych kroków pomoże ci rozwiązać zagadkę.
Mój problem polegał na tym, że próbowałem zmienić obrazek w innym wątku. Podobało mi się to:
- (void)changeImage {
backgroundImage.image = [UIImage imageNamed:@"img.png"];
}
Zadzwoń z:
[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
dispatch_async(dispatch_get_main_queue(), ^{backgroundImage.image = [UIImage imageNamed:@"img.png"];})
Jeśli chcesz ustawić obraz na UIImageView
programowo, nie zapomnij dodać UIImageView
jako widoku podrzędnego do widoku głównego.
I nie zapomniałem ustawić ramki ImageView .
tutaj jest kod
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
myImage.image = [UIImage imageNamed:@"myImage.png"];
[self.view addSubview:myImage];
Nie zapomnij wywołać sizeToFit()
po zmianie obrazu, jeśli następnie użyjesz rozmiaru UIImageView, aby ustawić zawartość UIScrollView, rozmiar i / lub oblicz skalę powiększenia
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];
To pytanie miało już wiele odpowiedzi. Niestety żaden nie działał dla mnie. Więc ze względu na kompletność dodam, co mi pomogło:
Miałem wiele obrazów 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ć. Z pełną ścieżką imageNamed:
(jak we wszystkich rozwiązaniach powyżej) nie działała i była złą metodą.
Zamiast tego używam teraz imageWithContentsOfFile:
tak:
self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName];
Nie wiem, czy ktoś tak daleko czyta?
Jeśli tak, a ten ci pomógł: zagłosuj. ;-)
Aby ustawić obraz na swoim imageView użyj poniższej linii kodu,
self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];