Я ищу возможность изменить цвет сферы вокруг источника света. Сейчас я делаю это, создавая CGImage из цвета и маскируя его с помощью PNG. Это работает, но всякий раз, когда я меняю цвет, мне нужно перерисовать весь образ, который очень медленный.Tint UIImage без перерисовки
Есть ли возможность подкрасить изображение без его перерисовки?
Спасибо за вашу помощь
Это мой текущий способ создать Sphere:
+ (UIImage *)imageWithColor:(UIColor *)color andImage:(UIImage *)image
{
// create Image from Color
CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,[color CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// mask color
CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(image.CGImage),
CGImageGetHeight(image.CGImage),
CGImageGetBitsPerComponent(image.CGImage),
CGImageGetBitsPerPixel(image.CGImage),
CGImageGetBytesPerRow(image.CGImage),
CGImageGetDataProvider(image.CGImage), NULL, false);
CGImageRef masked = CGImageCreateWithMask([img CGImage], actualMask);
CGImageRelease(actualMask);
UIImage * retImage = [UIImage imageWithCGImage:masked];
CGImageRelease(masked);
return retImage;
}
Ну, если кто-нибудь знает Howto меру, вызов функции является то, что медленно, я был бы признателен за ответ. Я выполнил приложение, измеряя частоту кадров с помощью инструментов, и, изменяя цвет, я получаю около 3 кадров в секунду, что не то, что я ожидаю ..;)