If, after considering George's answer, you still need to modify the colours, you could try using Core Image filters.
The following example adjusts the hue of a UIImageView
called screenImage
by an angle given in angle
.
- (void)rebuildFilterChain:(double)angle {
UIImage *uiImage = [UIImage imageNamed:@"background.jpg"];
CIImage *image = [CIImage imageWithCGImage:[uiImage CGImage]];
CIFilter *hueAdjust = [CIFilter filterWithName:@"CIHueAdjust"];
[hueAdjust setDefaults];
[hueAdjust setValue:image forKey: @"inputImage"];
[hueAdjust setValue: [NSNumber numberWithFloat:angle] forKey: @"inputAngle"];
self.resultImage = [hueAdjust valueForKey: @"outputImage"];
CGImageRef cgImage = [context createCGImage:resultImage fromRect:resultImage.extent];
screenImage.image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
}
The full list of Core Image filters is on the Apple site.