2010-01-02 4 views
46

Загружаю UIImageView с изображением в зависимости от взаимодействия пользователя. Когда первоначально отображается родительский вид, изображение не было выбрано, а изображение - черным. Если пользователь покидает это представление и возвращается, изображение все еще присутствует. Я пробовалИзвлечение изображения из UIImageView

myImageView.image = nil; 

при выходе из вида, но изображение остается. Как я могу удалить изображение, так что UIImageView снова появится черным?

UIImageView

соединен через IB.

ответ

110

Установка UIImageView как:

myImageView.image = nil 

правильный способ очистить UIImageView. Вы загружаете изображение, когда возвращается ваша функция вызова? Объявляется ли ваш UIImageView и/или используется в других местах вашей основной функции?

+0

По какой-то причине он работает сейчас. Я не знаю, что я сделал что-то другое. Благодарю. – 4thSpace

+0

Согласен; это то, как вы очищаете изображение. Наиболее вероятной причиной является то, что назначение nil фактически не вызывается. –

2

У меня также была такая же проблема, независимо от того, я использую myImageView.image = nil или [myImageView setImage:nil] изображение все еще отображается на UIImageView; предполагая, что один должен работать. Он проводит много часов для отладки и выяснения, где проблемы. Наконец, я сделал это с помощью следующего кода,

 [UIView beginAnimations:nil context:nil]; 
     [UIView animateWithDuration:1 animations:nil]; 
     myImageView.image = nil; 
     [UIView commitAnimations]; 

Я не знаю, почему, но когда я работаю в качестве анимации, то изображение может быть ясно совершенно.

3

У меня была аналогичная проблема с UIImageView на моем UIButton, где я установить изображение с помощью

[button setImage:image forState:UIControlStateNormal]; 

Установка в ноль будет удалить изображение, но вызвав геттер снова вернуть изображение. Я установил его:

[button setImage:nil forState:UIControlStateNormal]; 

вместо

[button.imageView.image = nil]; 
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]; 
} 
4

Try с указанием [self.imageView setNeedsDisplay]; После настройки изображения на ноль. Это вызовет перерисовку этого элемента в следующем цикле runloop, который я считаю. Ака вы отмечаете это мнение как «грязное» и нуждаетесь в перерисовке.

+0

Не получить достаточно взлетов на этом, потому что я думаю, что это правильный вариант в этом случае. –

+0

После установки нулевого изображения, когда-то ImageView все еще кэшировал изображение, а не перерисовывал, так что теперь это лучшее решение. благодаря –

Смежные вопросы