J'ai un IBOutlet
à un UIImageView
, mais quand je regarde le doc UIImageView
, je ne vois aucune indication sur le fait de le modifier par programme. Dois-je extraire un objet UIImage
de cette UIImageView
?
Si vous avez déjà un objet IBOutlet sur un UIImageView, il vous suffit de saisir une image et d'appeler setImage sur le récepteur (UIImageView). Vous trouverez ci-dessous deux exemples de saisie d’une image. Une du Web et une autre que vous ajoutez à votre dossier Ressources dans Xcode.
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];
ou
UIImage *image = [UIImage imageNamed: @"cell.png"];
Une fois que vous avez une image, vous pouvez définir UIImageView:
[imageView setImage:image];
La ligne ci-dessus suppose que imageView est votre IBOutlet.
C'est tout! Si vous voulez avoir de la fantaisie, vous pouvez ajouter l’image à une vue UIView, puis ajouter des transitions.
P.S. Gestion de la mémoire non incluse.
Notez que le fichier NIB ne connecte pas tous les IBOutlets tant que la vue n'a pas été ajoutée à la scène. Si vous connectez manuellement des éléments (ce que vous faites peut-être si les éléments sont dans des cartes d'interface réseau distinctes), il est important de le garder à l'esprit.
Donc, si mon contrôleur de vue de test a un "imageView" câblé par une plume, cela ne fonctionnera probablement pas:
testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"];
[self.view addSubview:testCardViewController.view];
Mais cela va:
[self.view addSubview:testCardViewController.view];
testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"];
Cela a fonctionné pour moi
[ImageViewName setImage:[UIImage imageNamed: @"ImageName.png"]];
Assurez-vous que ImageView est déclaré correctement dans le fichier .h et est lié à l'élément IB.
imageView.image = [UIImage imageNamed:@"myImage.png"];
Pour aider les personnes qui cherchent peut-être à chercher cela afin de résoudre leur problème, souvenez-vous de bien déclarer la propriété dans votre fichier d'en-tête et de synthétiser UIImageView dans votre fichier d'implémentation ... méthodes getter et setter.
#import <UIKit/UIKit.h>
@interface YOURCONTROLLERNAME : UIViewController {
IBOutlet UIImageView *imageToDisplay;
}
@property (nonatomic, retain) IBOutlet UIImageView *imageToDisplay;
@end
et puis dans votre .m:
@implementation YOURCONTROLLERNAME
@synthesize imageToDisplay;
//etc, rest of code goes here
À partir de là, vous devriez pouvoir utiliser quelque chose comme ce qui suit pour définir votre image.
[YOURCONTROLLER.imageToDisplay setImage:[UIImage imageNamed:value]];
Exemple dans 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")!)!)
}
}
Suivant les conseils de Jordan (qui devrait fonctionner en réalité), essayez de rendre visible UIImageView:
[imageView setHidden: NO];
et aussi - n'oubliez pas de l'attacher à l'UIView principal:
[mainView addSubview: imageView];
et à porter au front:
[mainView bringSubviewToFront: imageView];
J'espère que la combinaison de toutes ces étapes vous aidera à résoudre le mystère.
Mon problème était que j'ai essayé de changer l'image dans un autre thread. J'ai fait comme ça:
- (void)changeImage {
backgroundImage.image = [UIImage imageNamed:@"img.png"];
}
Appeler avec:
[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
Si vous souhaitez définir une image sur UIImageView
par programme, n'oubliez pas d'ajouter UIImageView
en tant que SubView à la vue principale.
Et n'oubliez pas de définir ImageView Frame .
voici le code
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
myImage.image = [UIImage imageNamed:@"myImage.png"];
[self.view addSubview:myImage];
N'oubliez pas d'appeler sizeToFit()
après avoir changé d'image si vous utilisez ensuite la taille de UIImageView pour définir UIScrollView contentSize et/ou calculer le facteur de zoom
let image = UIImage(named: "testImage")
imageView.image = image
imageView.sizeToFit()
scrollView.contentSize = imageView.bounds.size
myUIImageview.image = UIImage (named:"myImage.png")
Cette question a déjà eu beaucoup de réponses. Malheureusement, aucun n'a fonctionné pour moi. Donc, pour compléter, j'ajoute ce qui m'a aidé:
J'ai eu plusieurs images avec le même nom - donc je les ai commandées dans des sous-dossiers. Et j'avais le chemin complet vers le fichier image que je voulais montrer. Avec un chemin complet, imageNamed:
(tel qu'utilisé dans toutes les solutions ci-dessus) ne fonctionnait pas et était une mauvaise méthode.
Au lieu de cela, j'utilise maintenant imageWithContentsOfFile:
comme suit:
self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName];
Je ne sais pas, si quelqu'un lit aussi loin?
Si tel est le cas et celui-ci vous a aidé: merci de voter . ;-)
UIColor * background = [[UIColor alloc] initWithPatternImage:
[UIImage imageNamed:@"anImage.png"]];
self.view.backgroundColor = background;
[background release];
Travailler avec Swift 5 (XCode 10.3) c'est juste
yourImageView.image = UIImage(named: "nameOfTheImage")
Pour définir une image sur votre image, utilisez la ligne de code ci-dessous.
self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];