Я пытаюсь использовать базовое изображение на iPhone. Я могу составить свои цвета с помощью кварца для рисования uiview, но я хочу разделить каждый компонент в CALayer
(UIview используют больше ресурсов).
Таким образом, у меня есть белая маска, которую я хочу использовать для фильтрации фонового битового массива, и я хочу попробовать другой режим наложения. К сожалению, слои только "добавляют" свои цвета.
Вот мой код:
@implementation WhiteLayerHelper
- (void)drawLayer:(CALayer *)theLayer
inContext:(CGContextRef)myContext
{
// draw a white overlay, with special blending and alpha values, so that the saturation can be animated
CGContextSetBlendMode(myContext,kCGBlendModeSaturation);
CGContextSetRGBFillColor(myContext,1.0,1.0,1.0,0.9);
CGContextFillRect(myContext,[UIScreen mainScreen].bounds);
}
@end
И вот основное представление drawrect
код, где я использую свой CALayer:
- (void)drawRect:(CGRect)rect {
//get the drawing context
CGContextRef myContext = UIGraphicsGetCurrentContext();
// draw the background
[self fillContext:myContext withBounds:m_overlayRect withImage:m_currentImage];
[whiteLayer renderInContext:myContext];
}
Есть ли что-то не так?
Вовсе нет ... Я думаю, что для этого проще использовать opengl, потому что он, похоже, еще не реализован в CA.
Этот метод не кажется недостатком Core Animation, поскольку слои предварительно визуализируются в контексты изображения. Базовое изображение используется для фильтрации в реальном времени (во время анимации и прочего) этих изображений по сравнению с фоновыми слоями и их изображениями. Таким образом, для этой возможности используются свойства композитинга CALayer, которые недоступны на iPhone / iOS (пока) из-за требований Core Image.
OpenGL может сделать это за нас в нашей ситуации, однако =)
edit (add): установка режима наложения с помощью CGContext в -drawInContext: и -drawLayer: inContext:, конечно, по-прежнему действует с тем, что уже было визуализированы или присутствуют в изображении этого контекста. (когда он установлен до того, как что-либо было визуализировано в контексте (изображение), это эффект смешивания либо с полным черным, либо с полным белым (я не уверен, какой =)