ユーザーの操作に応じて、UIImageView
に画像をロードします。親ビューが最初に表示されるとき、画像は選択されておらず、画像ビューは黒です。ユーザーがそのビューを離れて戻ってきた場合、画像はまだそこにあります。私はもう試した
myImageView.image = nil;
ビューを離れると画像が残ります。 UIImageView
が再び黒く見えるように画像を削除するにはどうすればよいですか?
の
UIImageView
iBを介して接続されます。
UIImageView
を次のように設定します。
myImageView.image = nil
UIImageView
をクリアする正しい方法です。呼び出し元の関数が戻ったときに画像を読み込んでいますか? UIImageView
は宣言されているか、メイン関数の他の場所で使用されていますか?
[self.imageView setNeedsDisplay];
画像設定をnilにした後。これにより、次のランループサイクルでその要素の再描画がトリガーされます。このビューを「ダーティ」としてマークしているため、再描画が必要です。
UIButtonのUIImageViewで同様の問題が発生しました。
[button setImage:image forState:UIControlStateNormal];
Nilに設定するとイメージは削除されますが、ゲッターを再度呼び出すとイメージがリセットされます。私はそれを修正しました:
[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];
理由はわかりませんが、アニメーションとして作業する場合、画像は完全にクリアになります。