web-dev-qa-db-ja.com

UIImageViewから画像を削除する

ユーザーの操作に応じて、UIImageViewに画像をロードします。親ビューが最初に表示されるとき、画像は選択されておらず、画像ビューは黒です。ユーザーがそのビューを離れて戻ってきた場合、画像はまだそこにあります。私はもう試した

myImageView.image = nil;

ビューを離れると画像が残ります。 UIImageViewが再び黒く見えるように画像を削除するにはどうすればよいですか?

UIImageView

iBを介して接続されます。

56
4thSpace

UIImageViewを次のように設定します。

myImageView.image = nil 

UIImageViewをクリアする正しい方法です。呼び出し元の関数が戻ったときに画像を読み込んでいますか? UIImageViewは宣言されているか、メイン関数の他の場所で使用されていますか?

134

[self.imageView setNeedsDisplay];画像設定をnilにした後。これにより、次のランループサイクルでその要素の再描画がトリガーされます。このビューを「ダーティ」としてマークしているため、再描画が必要です。

4
theprojectabot

UIButtonのUIImageViewで同様の問題が発生しました。

[button setImage:image forState:UIControlStateNormal];

Nilに設定するとイメージは削除されますが、ゲッターを再度呼び出すとイメージがリセットされます。私はそれを修正しました:

[button setImage:nil forState:UIControlStateNormal];

の代わりに

[button.imageView.image = nil];
3
MaxGabriel

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];
}
2
Mohd Rahib

myImageView.image = nilまたは[myImageView setImage:nil]を使用しても、UIImageViewに表示される画像は同じ問題になります。どちらかが動作するはずです。デバッグと問題のある場所を見つけるのに何時間も費やします。最後に、次のコードを使用してそれを行いました。

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

理由はわかりませんが、アニメーションとして作業する場合、画像は完全にクリアになります。

2
TonyNet