我知道有很多线索关于这个,我读了它们但我无法使它工作。这是我的代码
@property (strong, nonatomic) UIImageView *advertiseView;
- (void)startShowingImage
{
_advertiseView = [[UIImageView alloc] initWithFrame:CGRectMake(80,320,150,97)];
_advertiseView.image = [UIImage imageNamed:@"blocksAd.png"];
[self.view addSubview:_advertiseView];
NSLog(@"startShowing");
}
- (void)stopShowingImage
{
NSLog(@"stopShowing");
[_advertiseView removeFromSuperview];
}
我让NSLogs
检查这些方法是否被调用,但是它首先显示的图像永远不会消失。
有关于此的任何建议吗?
答案 0 :(得分:1)
如果NSLog(@"stopShowing")
肯定被调用,那么我认为您可能遇到的唯一问题会导致removeFromSuperview
无法正常工作,那就是您没有进行更改(UI更新)主线。
请改为尝试:
[_advertiseView performSelectorOnMainThread:@selector(removeFromSuperview) withObject:nil waitUntilDone:NO];
答案 1 :(得分:0)
检查主线程
中是否调用了addSubview和removeFromSuperView检查startShowingImage是否只被调用一次,否则你就有了永远无法删除的孤立的UIImageViews
- (void)startShowingImage
{
if (self.advertiseView) {
self.advertiseView = [[UIImageView alloc] initWithFrame:CGRectMake(80,320,150,97)];
self.advertiseView.image = [UIImage imageNamed:@"blocksAd.png"];
[self.view addSubview:self.advertiseView];
NSLog(@"startShowing");
}
}
除非您特别需要避免问题,否则请使用属性语法