您可以使用 Core Graphics 混合任何绘图
CGContextSetBlendMode(kCGBlendModeDifference);
通过绘制第一张图像,然后将混合模式设置为差异并绘制第二张图像,您将获得差异(正如我在评论中建议的那样)。这为您提供了一个倒置的图像(如您的更新问题中所示)。要反转图像,您可以使用白色填充相同的矩形(因为混合模式仍设置为“差异”)。
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);