objective apple ios uiimageview calayer core-image

ios - apple - Superposición UIImageViews con el modo de mezcla Multiply?



objective c uiimage (1)

Tengo 2 UIImageViews que se muestran uno encima del otro. Uno de ellos puede arrastrarse usando un Reconocedor de gestos.

¿Hay alguna manera de que las ImageViews se puedan representar usando un modo de mezcla como Multiplicar? ¿De modo que cuando se mueven encima de cada uno, se renderizan con ese modo de fusión?


Debe sobrescribir la función drawRect: en la vista principal para lograr algo como esto:

- (void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); [image1.image drawInRect:image1.frame blendMode:kCGBlendModeMultiply alpha:1]; [image2.image drawInRect:image2.frame blendMode:kCGBlendModeMultiply alpha:1]; [super drawRect:rect]; }

Lo que hace es tomar el actual graphicsContext, y dibuja las dos imágenes en él, usando un modo de mezcla múltiple.

Para poder ver esto, necesitará establecer el alfa de las dos imágenes en 0, o el contenido recién dibujado se oscurecerá. Como la vista principal los está redibujando, verá las versiones multiplicadas resultantes.

Además, siempre que las posiciones de las imágenes se actualicen, deberá llamar a setNeedsDisplay en la vista principal para forzarlo a llamar a drawRect una vez más.

Estoy seguro de que probablemente haya formas más eficientes de utilizar Quartz 2D para lograr lo que desea, pero esto es probablemente el más simple.