从UIImageView中删除图像

问题描述:

根据用户交互,我加载了带有图像的UIImageView。当父视图最初显示时,没有选择图像并且图像视图是黑色的。如果用户离开该视图并返回,图像仍然存在。我试过从UIImageView中删除图像

myImageView.image = nil; 

在离开视图时图像仍然存在。我如何删除图像,使UIImageView再次显示黑色?

的UIImageView

通过IB连接。

设置UIImageView为:

myImageView.image = nil 

是清除UIImageView的正确方法。您的调用函数返回时是否加载图像?您的UIImageView是在您的主要功能的其他地方声明和/或使用的吗?

+0

出于某种原因,它现在正在工作。我不知道我做了什么不同的事情。谢谢。 – 4thSpace 2010-01-02 16:50:48

+0

同意;这是你如何清除图像。最可能的原因是nil赋值实际上没有被调用。 – 2010-01-02 16:52:09

我也遇到了同样的问题,不管我用的是myImageView.image = nil还是[myImageView setImage:nil]图片仍然显示在UIImageView;假设任何一个人应该工作。它花费我很多时间来调试并找出问题所在。最后,我做到了通过使用下面的代码,

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

我不知道为什么,但我作为一个动画工作,然后图像可以清晰完美。

我对我的UIButton,我在那里设置使用

[button setImage:image forState:UIControlStateNormal]; 

将其设置为无会删除图像,但在调用的getter再次重置图像的图像与UIImageView的一个类似的问题。的

[button setImage:nil forState:UIControlStateNormal]; 

代替

[button.imageView.image = nil]; 

可以使用UITapGestureRecognizer删除图像的点击的给定数量:我有固定它。

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

,并给该方法的定义:

- (void)onImageTapped:(UITapGestureRecognizer*)recognizer 
{ 

    UIImageView *imgView = (UIImageView*) recognizer.view; 
    [imgView removeFromSuperview]; 
} 

试述[self.imageView setNeedsDisplay];后您的图像设置为零。这会触发在我认为的下一个循环周期中重新绘制该元素。又意味着你将这个视图标记为“脏”并需要重绘。

+0

没有得到足够的这一个,因为我认为这是正确的在这种情况下。 – 2015-09-25 02:07:10

+0

将图像设置为零后,有时ImageView仍会缓存图像而不是reDraw,因此现在这里是最佳解决方案。谢谢 – 2017-11-14 04:15:53