Comment définir une image sur UIImage
object . Par exemple:
UIImage *img = [[UIImage alloc] init];
[img setImage:[UIImage imageNamed:@"anyImageName"]];
Mon objet UIImage
est déclaré dans le fichier .h
et alloué dans la méthode init
, je dois définir l'image dans la méthode viewDidLoad
. Des idées?
UIImage *img = [UIImage imageNamed:@"anyImageName"];
imageNamed:
Renvoie l'objet image associé au nom de fichier spécifié.+ (UIImage *)imageNamed:(NSString *)name
Paramètres
prénom
Le nom du fichier. S'il s'agit du premier chargement de l'image, la méthode recherche une image avec le nom spécifié dans le fichier bundle principal de l’application.
Valeur de retour
L'objet image pour le fichier spécifié ou nil si la méthode n'a pas pu trouver l'image spécifiée.Discussion
Cette méthode recherche dans les caches système un objet image portant le nom spécifié et renvoie cet objet s'il existe. Si un correspondant Si l'objet image n'est pas déjà dans le cache, cette méthode charge l'image les données du fichier spécifié, le met en cache, puis renvoie le fichier objet résultant.
Créez un UIImageView et ajoutez-y UIImage:
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image Name"]] ;
Puis ajoutez-le à votre vue:
[self.view addSubView: imageView];
Il suffit de suivre ceci
UIImageView *imgview = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)];
[imgview setImage:[UIImage imageNamed:@"YourImageName"]];
[imgview setContentMode:UIViewContentModeScaleAspectFit];
[self.view addSubview:imgview];
Il y a une erreur sur cette ligne:
[img setImage:[UIImage imageNamed@"anyImageName"]];
CA devrait etre:
[img setImage:[UIImage imageNamed:@"anyImageName"]];
UIImage *img = [UIImage imageNamed@"aImageName"];
peut être:
UIImage *img = [[UIImage alloc] init];
et quand vous voulez changer l'image:
img = [UIImage imageNamed:@"nameOfPng.png"];
mais l'objet n'était pas au même endroit dans la mémoire, mais si vous utilisez le pointeur, le même pointeur pointera vers la dernière image chargée.
Vous ne pouvez pas allouer UIImage, cela est impossible . Un code correct avec UIImageView allouer:
UIImageView *_image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"something.png"]] ;
Dessiner une image:
CGContextDrawImage(context, rect, _image.image.CGImage);
Commencez par déclarer UIImageView et donnez-lui un cadre
UIImageView *imageView = [[UIImageView alloc] initWithFrame: CGRectMake( 10.0f, 15.0f, 40.0f,40.0f )];
[imageView setBackgroundColor: [UIColor clearColor]];
[imageView setImage:[UIImage imageNamed:@"comments_profile_image.png"]];
[self.view addSubview: imageView];
Comme vikingosgundo l'a dit, mais gardez à l'esprit que si vous utilisez [UIImage imageNamed:image]
, l'image est mise en cache et consomme de la mémoire. Donc, sauf si vous prévoyez d'utiliser la même image à plusieurs endroits, vous devez charger l'image avec imageWithContentsOfFile:
et imageWithData:
Cela vous fera économiser beaucoup de mémoire et accélérera votre application.
il suffit de changer cette ligne
[img setImage:[UIImage imageNamed:@"anyImageName"]];
avec ligne suivante
img = [UIImage imageNamed:@"anyImageName"];
Essayez ce code à 100% de travail ....
UIImageView * imageview = [[UIImageView alloc] initWithFrame:CGRectMake(20,100, 80, 80)];
imageview.image = [UIImage imageNamed:@"myimage.jpg"];
[self.view addSubview:imageview];
Vous pouvez définir une image dans un objet UIImage de la manière suivante:
UIImage *imageObject = [UIImage imageNamed:@"imageFileName"];
mais en initialisant UIImage
Objet comme celui-ci, l'image est toujours stockée dans la mémoire cache même si vous le rendez nil
comme imageObject=nil;
Il vaut mieux suivre ceci:
NSString *imageFilePath = [[NSBundle mainBundle] pathForResource:@"imageFilename" ofType:@"imageFile_Extension"];
UIImage *imageObject = [UIImage imageWithContentsOfFile:imageFilePath];
EXEMPLE: NSString *imageFilePath = [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"png"];
UIImage *imageObject = [UIImage imageWithContentsOfFile:imageFilePath];