Удаление изображения из UIImageView


Я UIImageView С изображения в зависимости от взаимодействия с пользователем. При первоначальном отображении родительского вида изображение не было выбрано, и изображение является черным. Если пользователь покидает это представление и возвращается, изображение все еще там. Я пробовал

myImageView.image = nil;

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

The

UIImageView

подключен через ИБ.

5 52

5 ответов:

задание UIImageView как:

myImageView.image = nil 

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

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

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

[button setImage:image forState:UIControlStateNormal];

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

[button setImage:nil forState:UIControlStateNormal];

вместо

[button.imageView.image = nil];

можно использовать 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];
}

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

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

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