0

こんにちは、私のプログラムは小さな画像をメイン ビューに追加します。最近追加した画像(サブビュー)を削除するには、この元に戻すボタンがあります。すべての異なる画像がある場合は問題なく動作しますが、同じ画像が 2 つある場合はエラーが発生します。これは、両方が同じ元のpngファイルを指しているためだと思います。しかし、私はそれを修正する方法がわかりません。ヒントを教えてください。

add{  
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"pah%d",tagNum]];
    TouchImageView *touchImageView = [[TouchImageView alloc] initWithFrame:imageRect];
    imageCounter++;
    touchImageView.tag = imageCounter;
    touchImageView.image = image;
    touchImageView.center = CGPointMake(160.0, 230.0);
    [view addSubview:touchImageView];
}

undo{
       [[self.view viewWithTag:imageCounter] removeFromSuperview];
    imageCounter--;
}
4

2 に答える 2

0

ここで問題があるとは思いませんが imageNamed:、内部キャッシュシステムを使用して画像をメモリにキャッシュします。要求するたび[UIImage imageNamed:@"foo"]に、同じ UIImage インスタンスを取得します。

imageWithContentsOfFile:代わりに、UIImage の一意のインスタンスを返すものを使用することをお勧めします。

それを試して、違いがあるかどうかを確認してください。

于 2012-06-30T09:47:57.087 に答える
0

最近追加された画像を削除する必要がある場合...次に、画像を追加するたびに、このように参照を保存します-ARCでうまく機能します...

 UIImageView *imageView = touchImageView;

次に、最近追加された画像ボタンのクリックを削除します

 for(UIImageView *iV in view.subviews)
 {
    if(iV == imageView)
    {
       [iV removeFromSuperView];
    }
 }

私はそれがうまくいくと思う...

于 2012-06-30T12:27:56.017 に答える