Я вызываю этот метод в своем ViewController, который содержит UIScrollView, когда пользователь нажимает кнопку.

-(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; но это не сработало

0
user3249186 8 Июн 2014 в 21:26

2 ответа

Лучший ответ

Сначала вам нужно удалить старый вид из 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
kkumpavat 8 Июн 2014 в 17:39

Я не совсем уверен, что делает ваше приложение, но похоже, что вам нужно иметь только одно изображение, поэтому я бы посоветовал вам удалить предыдущее изображение.

Это можно сделать двумя способами:

1) вы можете использовать свое изображение как собственность и просто позвонить [_imageNews removeFromSuperView];

2) вы можете перебирать подвиды self.scrollView и удалять их оттуда.

0
ColdSteel 8 Июн 2014 в 17:34