Removing image from UIImageView

前端 未结 5 909
清酒与你
清酒与你 2021-02-01 00:44

I load a UIImageView with an image depending on user interaction. When the parent view is initially displayed, no image has been selected and the imageview is blac

相关标签:
5条回答
  • 2021-02-01 00:54

    Setting the UIImageView as:

    myImageView.image = nil 
    

    is the correct way to clear an UIImageView. Are you loading the image when your calling function returns? Is your UIImageView being declared, and/or used elsewhere in your main function?

    0 讨论(0)
  • 2021-02-01 01:02

    I had a similar problem with the UIImageView on my UIButton, where I had set the image using

    [button setImage:image forState:UIControlStateNormal];
    

    Setting it to nil would remove the image, but calling the getter again reset the image. I fixed it with:

    [button setImage:nil forState:UIControlStateNormal];
    

    instead of

    [button.imageView.image = nil];
    
    0 讨论(0)
  • 2021-02-01 01:04

    You can use a UITapGestureRecognizer to remove the image for a given number of clicks.

    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];
    

    and give the method's definition:

    - (void)onImageTapped:(UITapGestureRecognizer*)recognizer
    {
    
        UIImageView *imgView = (UIImageView*) recognizer.view;
        [imgView removeFromSuperview];
    }
    
    0 讨论(0)
  • 2021-02-01 01:14

    Try stating [self.imageView setNeedsDisplay]; after your image setting to nil. This will trigger a redraw of that element on the next runloop cycle I believe. Aka you are marking this view as 'dirty' and needs a redraw.

    0 讨论(0)
  • 2021-02-01 01:14

    I also got the same problem, no matter I use myImageView.image = nil or [myImageView setImage:nil] the image still show on the UIImageView; assuming either one should works. It spend me many hours to debug and find out where have problem. Finally, I did it by using the following code,

            [UIView beginAnimations:nil context:nil];
            [UIView animateWithDuration:1 animations:nil];
            myImageView.image = nil;
            [UIView commitAnimations];
    

    I don't know why, but when I work as an animation then the image can be clear perfectly.

    0 讨论(0)
提交回复
热议问题