无法正确更新UIImageView

时间:2014-06-08 17:26:54

标签: ios objective-c uiimageview sdwebimage

当用户点击按钮时,我在包含UIScrollView的ViewController中调用此方法。

-(void) updateView:(NSURL *) urlPicture{
      UIImageView *imageNews = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,300,200)];
    imageNews.contentMode = UIViewContentModeScaleAspectFit;
    [imageNews setImageWithURL:urlPicture];
    [self.scrollView addSubview:imageNews];
}

它似乎工作正常,但当我有一个奇怪的行为。 它没有清除以前的图像来放置新的图像。 例如:如果第一张图像是300x200而第二张图像是200x200,那么当应用程序下载第二张图像时,我仍然可以看到第一张图像的边。

我想知道在下载第二张图片之前如何清除上一张图片。 我已经尝试imageNews.image = nil;但它没有工作

2 个答案:

答案 0 :(得分:1)

首先,您需要从scrollView中删除旧视图。您可以按照下面的说明编辑代码

#define IMAGE_VIEW_TAG     1001
-(void) updateView:(NSURL *) urlPicture{
    UIView *oldView = [self.scrollView viewWithTag:IMAGE_VIEW_TAG];
    if(oldView)
        [oldView removeFromSuperView]
    UIImageView *imageNews = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,300,200)];
    imageNews.tag = IMAGE_VIEW_TAG;
    imageNews.contentMode = UIViewContentModeScaleAspectFit;
    [imageNews setImageWithURL:urlPicture];
    [self.scrollView addSubview:imageNews];
}

答案 1 :(得分:0)

嗯,我不确定你的应用程序做了什么, 但似乎你需要只有1张图片 所以我建议你删除上一张图片。

有两种方法:

1)您可以将图片用作财产,只需拨打[_imageNews removeFromSuperView];

即可

2)您可以浏览self.scrollView个子视图并将其从中移除。