从UIImageView中删除图像

时间:2010-01-02 16:36:39

标签: iphone cocoa-touch uiimageview uiimage

我根据用户互动加载UIImageView图片。最初显示父视图时,未选择任何图像且图像视图为黑色。如果用户离开该视图并返回,则图像仍然存在。我试过了

myImageView.image = nil;

离开视图但图像仍然存在。如何删除图片以使UIImageView再次显示为黑色?

  

的UIImageView

通过IB连接。

5 个答案:

答案 0 :(得分:130)

UIImageView设置为:

myImageView.image = nil 

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

答案 1 :(得分:4)

尝试在图像设置为nil后说明[self.imageView setNeedsDisplay];。这将触发我认为在下一个runloop循环中重绘该元素。 Aka你把这个观点标记为“脏”'并需要重绘。

答案 2 :(得分:3)

我的UIButton上的UIImageView遇到了类似的问题,我使用

设置了图像
[button setImage:image forState:UIControlStateNormal];

将其设置为nil将删除图像,但再次调用getter会重置图像。我修好了:

[button setImage:nil forState:UIControlStateNormal];

而不是

[button.imageView.image = nil];

答案 3 :(得分:2)

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

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

我不知道为什么,但当我作为动画工作时,图像可以很清晰。

答案 4 :(得分:2)

您可以使用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];
}