我根据用户互动加载UIImageView
图片。最初显示父视图时,未选择任何图像且图像视图为黑色。如果用户离开该视图并返回,则图像仍然存在。我试过了
myImageView.image = nil;
离开视图但图像仍然存在。如何删除图片以使UIImageView
再次显示为黑色?
的UIImageView
通过IB连接。
答案 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];
}