Je charge un UIImageView
avec une image en fonction de l'interaction de l'utilisateur. Lorsque la vue parent est initialement affichée, aucune image n'a été sélectionnée et la vue image est noire. Si l'utilisateur quitte cette vue et revient, l'image est toujours là. J'ai essayé
myImageView.image = nil;
en quittant la vue mais l'image reste. Comment puis-je supprimer l'image pour que le UIImageView
apparaisse à nouveau en noir?
Le
UIImageView
est connecté via IB.
Définition de UIImageView
comme:
myImageView.image = nil
est la bonne façon d'effacer un UIImageView
. Chargez-vous l'image lorsque votre fonction d'appel revient? Votre UIImageView
est-il déclaré et/ou utilisé ailleurs dans votre fonction principale?
Essayez d'indiquer [self.imageView setNeedsDisplay];
après que le réglage de votre image soit nul. Cela déclenchera, je crois, un redessin de cet élément lors du prochain cycle de boucle d'exécution. Aka vous marquez cette vue comme "sale" et avez besoin d'une refonte.
J'ai eu un problème similaire avec UIImageView sur mon UIButton, où j'avais défini l'image en utilisant
[button setImage:image forState:UIControlStateNormal];
Si vous le définissez sur zéro, l'image sera supprimée, mais le fait d'appeler à nouveau le getter réinitialisera l'image. Je l'ai corrigé avec:
[button setImage:nil forState:UIControlStateNormal];
au lieu de
[button.imageView.image = nil];
Vous pouvez utiliser un UITapGestureRecognizer
pour supprimer l'image pour un nombre donné de clics.
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onImageTapped:)];
tapGesture.delegate = self;
tapGesture.numberOfTapsRequired = 2; // no. of taps (clicks) on which you want to remove the image
[myImageView addGestureRecognizer:tapGesture];
et donnez la définition de la méthode:
- (void)onImageTapped:(UITapGestureRecognizer*)recognizer
{
UIImageView *imgView = (UIImageView*) recognizer.view;
[imgView removeFromSuperview];
}
J'ai également eu le même problème, peu importe que j'utilise myImageView.image = nil
ou [myImageView setImage:nil]
l'image s'affiche toujours sur le UIImageView
; en supposant que l'un ou l'autre devrait fonctionner. Il m'a fallu plusieurs heures pour déboguer et découvrir où ont des problèmes. Enfin, je l'ai fait en utilisant le code suivant,
[UIView beginAnimations:nil context:nil];
[UIView animateWithDuration:1 animations:nil];
myImageView.image = nil;
[UIView commitAnimations];
Je ne sais pas pourquoi, mais lorsque je travaille en tant qu'animation, l'image peut être parfaitement claire.