1 つの画像が NSSearchPathForDirectoriesInDomains メソッドを使用して保存および読み込みプロセスを既に完了している場合に、Objective-C で UIImages を比較することについて質問があります。
私が望むのは、画像の表示内容に応じて、クリック時にユーザーを新しい画面に誘導することです。
簡単にするために、黒のイメージと緑のイメージの 2 つの可能性があるとします。黒い画像をクリックすると xib1 に移動し、緑色の画像をクリックすると xib2 に移動します。
これは非常に簡単で、保存および読み込みシステムを実装するまで機能していました。
保存するには、次のようにします。
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
pngFilePath = [NSString stringWithFormat:@"%@/test.png",documentsDirectory];
data1 = [NSData dataWithData:UIImagePNGRepresentation([level1part1 objectAtIndex:0])];
[data1 writeToFile:pngFilePath atomically:YES];
ロードするには、次のようにします。
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
pngFilePath = [NSString stringWithFormat:@"%@/test.png",documentsDirectory];
UIImage *image = [UIImage imageWithContentsOfFile:pngFilePath];
[button1 setImage:image forState:UIControlStateNormal];
これで問題ありません。プログラムを終了して再起動すると、希望どおりに画像が画面に表示されます。仮説として、現在 button1 に表示されている画像が緑色の画像であるとしましょう。
送信者のIDを持つボタンをクリックした後に次のコードを呼び出すと(これはbutton1です):
if(sender.currentImage == [UIImage imageNamed:self.greenImage])
{
VisitAlreadyCorrectScreen *screen = [[VisitAlreadyCorrectScreen alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:screen animated:YES];
}
currentImage は緑色の画像であり、比較している緑色の画像と同じ画像ですが、保存プロセスで緑色の画像をメモリに保存したため、異なる場所に保持されているため比較が機能しないと思いますメモリ内 - 次の NSLog で検証:
Current Image: <UIImage: 0x95614c0>, and Yes Image: <UIImage: 0xde748f0>
この場合、2 つの画像を比較して一致させる方法がわかりません (どちらもリソース フォルダーにある同じ画像に関連しています)。誰にも提案はありますか?
問題が何であるかを十分に説明していない場合はお知らせください。
前もって感謝します!