Я вызываю этот метод в своем 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
; но это не сработало
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) вы можете использовать свое изображение как собственность и просто позвонить [_imageNews removeFromSuperView];
2) вы можете перебирать подвиды self.scrollView
и удалять их оттуда.
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.