Ich habe ein IBOutlet
bis ein UIImageView
, aber wenn ich mir das UIImageView
Dokument ansehe, sehe ich keine Hinweise darauf, wie ich es programmgesteuert ändern kann. Muss ich daraus ein UIImage
Objekt holen UIImageView
?
Ich habe ein IBOutlet
bis ein UIImageView
, aber wenn ich mir das UIImageView
Dokument ansehe, sehe ich keine Hinweise darauf, wie ich es programmgesteuert ändern kann. Muss ich daraus ein UIImage
Objekt holen UIImageView
?
Antworten:
Wenn Sie bereits ein IBOutlet für eine UIImageView haben, müssen Sie nur ein Bild abrufen und setImage auf dem Empfänger (UIImageView) aufrufen. Im Folgenden finden Sie zwei Beispiele für das Aufnehmen eines Bildes. Eine aus dem Web und eine, die Sie in Xcode zu Ihrem Ressourcenordner hinzufügen.
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];
oder
UIImage *image = [UIImage imageNamed: @"cell.png"];
Sobald Sie ein Bild haben, können Sie UIImageView einstellen:
[imageView setImage:image];
In der obigen Zeile wird davon ausgegangen, dass imageView Ihr IBOutlet ist.
Das ist es! Wenn Sie Lust haben, können Sie das Bild zu einer UIView hinzufügen und dann Übergänge hinzufügen.
PS Speicherverwaltung nicht enthalten.
Beachten Sie, dass die NIB-Datei nicht alle IBOutlets verkabelt, bis die Ansicht zur Szene hinzugefügt wurde. Wenn Sie die Dinge manuell verkabeln (was Sie möglicherweise tun, wenn sich die Dinge in separaten NIBs befinden), ist dies wichtig zu beachten.
Wenn mein Test View Controller eine "imageView" hat, die von einer Feder verkabelt ist, funktioniert dies wahrscheinlich nicht:
testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"];
[self.view addSubview:testCardViewController.view];
Aber das wird:
[self.view addSubview:testCardViewController.view];
testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"];
imageView.image = [UIImage imageNamed:@"myImage.png"];
Denken Sie daran, die Eigenschaft in Ihrer Header-Datei ordnungsgemäß zu deklarieren und die UIImageView in Ihrer Implementierungsdatei zu synthetisieren, damit Personen, die dies möglicherweise googeln, versuchen, ihr Problem zu lösen Getter- und Setter-Methoden.
#import <UIKit/UIKit.h>
@interface YOURCONTROLLERNAME : UIViewController {
IBOutlet UIImageView *imageToDisplay;
}
@property (nonatomic, retain) IBOutlet UIImageView *imageToDisplay;
@end
und dann in deiner .m:
@implementation YOURCONTROLLERNAME
@synthesize imageToDisplay;
//etc, rest of code goes here
Von dort aus sollten Sie in Ordnung sein, wenn Sie Folgendes verwenden, um Ihr Bild einzustellen.
[YOURCONTROLLER.imageToDisplay setImage:[UIImage imageNamed:value]];
Beispiel 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")!)!)
}
}
Befolgen Sie die Anweisungen von Jordan (die eigentlich funktionieren sollten), und legen Sie fest, dass UIImageView sichtbar ist:
[imageView setHidden: NO];
und auch - vergessen Sie nicht, es an die Haupt-UIView anzuhängen:
[mainView addSubview: imageView];
und nach vorne zu bringen:
[mainView bringSubviewToFront: imageView];
Die Hoffnung, all diese Schritte zu kombinieren, wird Ihnen helfen, das Rätsel zu lösen.
Mein Problem war, dass ich versucht habe, das Bild in einem anderen Thread zu ändern. Mir hat das gefallen:
- (void)changeImage {
backgroundImage.image = [UIImage imageNamed:@"img.png"];
}
Rufen Sie an mit:
[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
dispatch_async(dispatch_get_main_queue(), ^{backgroundImage.image = [UIImage imageNamed:@"img.png"];})
Wenn Sie das Bild UIImageView
programmgesteuert einstellen möchten, vergessen Sie nicht, es UIImageView
als Unteransicht zur Hauptansicht hinzuzufügen .
Und vergessen Sie auch nicht, ImageView Frame einzustellen .
Hier ist der Code
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
myImage.image = [UIImage imageNamed:@"myImage.png"];
[self.view addSubview:myImage];
Vergessen Sie nicht, sizeToFit()
nach dem Ändern des Bildes aufzurufen, wenn Sie dann die Größe von UIImageView verwenden, um UIScrollView contentSize festzulegen und / oder die Zoomskala zu berechnen
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];
Diese Frage hatte bereits viele Antworten. Leider hat keiner für mich gearbeitet. Der Vollständigkeit halber füge ich hinzu, was mir geholfen hat:
Ich hatte mehrere Bilder mit demselben Namen - also habe ich sie in Unterordnern bestellt. Und ich hatte den vollständigen Pfad zu der Bilddatei, die ich anzeigen wollte. Mit einem vollständigen Pfad imageNamed:
(wie in allen obigen Lösungen verwendet) funktionierte nicht und war die falsche Methode.
Stattdessen benutze ich jetzt imageWithContentsOfFile:
so:
self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName];
Weiß nicht, ob jemand so weit liest?
Wenn ja und dieser hat dir geholfen: bitte stimme ab. ;-);
Um das Bild in Ihrer imageView festzulegen, verwenden Sie die folgende Codezeile:
self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];