を使用してコアグラフィックスの任意の図面をブレンドできます
CGContextSetBlendMode(kCGBlendModeDifference);
最初の画像を描画してから、ブレンドモードを差分に設定し、2番目の画像を描画すると、違いが得られます(コメントで提案したように)。これにより、反転した画像が得られます(更新の質問に見られるように)。画像を反転するには、を使用して同じ長方形を白色で塗りつぶすことができます(ブレンドモードはまだ「差分」に設定されているため)。
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(context, frame);
これをすべて行うためのサンプルコード(drawRect:内)を以下に示します。
CGContextRef context = UIGraphicsGetCurrentContext();
// Your two images
CGImageRef img1 = [[UIImage imageNamed:@"Ygsvt.png"] CGImage];
CGImageRef img2 = [[UIImage imageNamed:@"ay5DB.png"] CGImage];
// Some arbitrary frame
CGRect frame = CGRectMake(30, 30, 100, 100);
// Invert the coordinates to not draw upside down
CGContextTranslateCTM(context, 0, frame.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
// Draw original image
CGContextDrawImage(context, frame, img1);
// Draw the second image using difference blend more over the first
CGContextSetBlendMode(context, kCGBlendModeDifference);
CGContextDrawImage(context, frame, img2);
// Fill the same rect with white color to invert
// (still difference blend mode)
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(context, frame);