Quiero añadir una sombra DESCOLORADO/resplandor exterior a un UIImage
/UIImageView
/UIView
pero no conozco Core Graphics
en absoluto.¿Cómo agrego un resplandor exterior a un UIImage o UIImageView o UIView
Edit: Por favor ayuda !!
Quiero añadir una sombra DESCOLORADO/resplandor exterior a un UIImage
/UIImageView
/UIView
pero no conozco Core Graphics
en absoluto.¿Cómo agrego un resplandor exterior a un UIImage o UIImageView o UIView
Edit: Por favor ayuda !!
Tome el enfoque descrito por Cirrostratus, conserve una copia en caché del mismo y luego aplique una transformación para cambiar el tamaño y/o la posición de la imagen mientras la arrastra.
(advertencia, esto no es un código funcional/probado, pero debería empezar)
-(UIImage*)addGlowToImage:(UIImage*)imageInput;
{
CGRect newSize = imageInput.bounds;
CGImageRef theImage = imageInput.CGImage;
// expand the size to handle the "glow"
newSize.size.width += 6.0;
newSize.size.height += 6.0;
UIGraphicsBeginImageContext(newSize);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextBeginTransparencyLayerWithRect(ctx, newSize, NULL);
CGContextClearRect(ctx, newSize);
// you can repeat this process to build glow.
CGContextDrawImage(ctx, newSize, theImage);
CGContextSetAlpha(ctx, 0.2);
CGContextEndTransparencyLayer(ctx);
// draw the original image into the context, offset to be centered;
CGRect centerRect = inputImage.bounds;
centerRect.origin.x += 3.0;
centerRect.origin.y += 3.0;
CGContextDrawImage(ctx, centerRect, theImage);
result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
}
Luego, en el método, mientras que la escala que haría algo como:
// assumes UIImage *cachedImage = [self addGlowToImage:origImage]; has been called already.
// assumes ivars for scale exists
CGRect newRect = cachedImage.bounds;
newRect.size.width += scale;
newRect.size.height += scale;
[cachedImage drawInRect:newRect]; // image will be scaled to fill destination rectangle.
Sin duda tomar una mira los documentos de Apple. Un buen lugar para comenzar es el Quartz 2D Programming Guide.
Como una consideración de rendimiento, iPhone OS no admite las propiedades shadowColor, shadowOffset, shadowOpacity y shadowRadius, que normalmente podría usar en Cocoa. La mayoría de las personas duplican la forma que desean iluminar varias veces con cada vez que baja la opacidad y la compensación de la forma de un píxel a la vez para simular el aspecto de un resplandor. Si su brillo no necesita ser muy grande, no puede notar la diferencia.
Esto tomará mucho de rendimiento si la vista se actualiza muchas veces por segundo. Estoy cambiando el tamaño usando el evento 'touchesMoved'. – Jaba
Se puede usar esta, simple y rápido, esto funciona usando UIView, desabrocharse, etc:
UIView *shadowView = [[UIView alloc] initWithFrame:CGRectMake(100, 66, 112, 112)];
shadowView.layer.shadowColor = [[UIColor blackColor] CGColor];
shadowView.layer.shadowOpacity = .4;
shadowView.layer.shadowOffset = CGSizeZero;
shadowView.layer.masksToBounds = NO;
si, puede utilizar radios, añadir lo siguiente:
shadowView.layer.shadowRadius = 10.0f;
Muy bien, no es exactamente lo que quería pero, lo acepto, quería un fundido. – Jaba
También puede usar la propiedad de sombra como brillo si cambia el color. Simple y fácil. – zekel
Este código es incorrecto de muchas maneras ... –