Удаление изображения из UIImageView
Я загружаю UIImageView
образ в зависимости от взаимодействия пользователя. Когда первоначально отображается родительский вид, изображение не было выбрано, а изображение - черным. Если пользователь покидает это представление и возвращается, изображение все еще присутствует. Я пробовал
myImageView.image = nil;
при выходе из представления, но изображение остается. Как удалить изображение, чтобы UIImageView
снова появлялся черным?
UIImageView
подключается через IB.
Ответы
Ответ 1
Установка UIImageView
как:
myImageView.image = nil
- это правильный способ очистки UIImageView
. Вы загружаете изображение, когда возвращается ваша функция вызова? Объявляется ли ваш UIImageView
и/или используется в другом месте вашей основной функции?
Ответ 2
Попробуйте указать [self.imageView setNeedsDisplay];
после установки изображения на нуль. Это вызовет перерисовку этого элемента в следующем цикле runloop, который я считаю. Ака вы отмечаете это мнение как "грязное" и нуждаетесь в перерисовке.
Ответ 3
У меня была аналогичная проблема с UIImageView на моем UIButton, где я установил изображение, используя
[button setImage:image forState:UIControlStateNormal];
Установив его на nil, вы удалите изображение, но снова вызовите getter reset изображение. Я исправил его с помощью
[button setImage:nil forState:UIControlStateNormal];
вместо
[button.imageView.image = nil];
Ответ 4
У меня также была та же проблема, независимо от того, что я использую myImageView.image = nil
или [myImageView setImage:nil]
, изображение все еще отображается на UIImageView
; предполагая, что один должен работать. Он проводит много часов для отладки и выяснения, где проблемы. Наконец, я сделал это, используя следующий код,
[UIView beginAnimations:nil context:nil];
[UIView animateWithDuration:1 animations:nil];
myImageView.image = nil;
[UIView commitAnimations];
Я не знаю, почему, но когда я работаю как анимация, тогда изображение может быть понятным.
Ответ 5
Вы можете использовать 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];
}