Pregunta

Tengo un UIImageView que quiero añadir una sombra detrás.Me gustaría que apple había que como una propiedad, pero tienen que hacer un montón de cosas difíciles para nosotros los programadores, así que he de hacer esta pregunta.

¿Fue útil?

Solución

Hay una manera mejor y más fácil de hacer esto. UIImageView hereda de UIView por lo que tiene una propiedad de capa. Puede acceder a las propiedades de sombra y Bam de capa, que tiene una sombra.

Si usted tiene la UIImageView como IBOutlet a un archivo semilla, sólo puede poner en práctica el awakeFromNib por ejemplo.

Objetivo-C

- (void)awakeFromNib {
    imageView.layer.shadowColor = [UIColor purpleColor].CGColor;
    imageView.layer.shadowOffset = CGSizeMake(0, 1);
    imageView.layer.shadowOpacity = 1;
    imageView.layer.shadowRadius = 1.0;
    imageView.clipsToBounds = NO;
}

No se olvide de #import "QuartzCore/CALayer.h"


Para Swift, que puede ir sobre él de varias maneras. Crear una extensión de clase, subclase, o una instancia imageView. Cualquiera que sea la forma, el proceso es el mismo en la modificación de las capas de sombra propiedad.

Swift 3

override func awakeFromNib() {
    super.awakeFromNib()

    imageView.layer.shadowColor = UIColor.purple.cgColor
    imageView.layer.shadowOffset = CGSize(width: 0, height: 1)
    imageView.layer.shadowOpacity = 1
    imageView.layer.shadowRadius = 1.0
    imageView.clipsToBounds = false
}

Otros consejos

Lo más sencillo es añadir una capa de la sombra a la imagen de la vista:

CALayer             *layer = [CALayer layer];
CGRect              bounds = self.bounds;

layer.bounds = bounds;
layer.position = CGPointMake(bounds.size.width / 2 + 3, bounds.size.height / 2 + 3);
layer.backgroundColor = [UIColor colorWithWhite: 0.25 alpha: 0.55].CGColor;
layer.zPosition = -5;

[self.layer addSublayer: layer];

Asegúrese de "Clip de Subvistas" está desactivada para la vista

solución Swift con extensión. No se requiere de subclases. Llamar myImage.addShadow() de viewDidLoad(). Esto debería funcionar para UIView y UIImageView.

extension UIView {

    func addShadow() {
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOffset = CGSize(width: 0, height: 0)
        layer.shadowOpacity = 0.5
        layer.shadowRadius = 5
        clipsToBounds = false
    }
}

En adicional a que, si se desea realizar borde blanco y la sombra puede utilizar ese código:

//shadow part
imageView.layer.shadowColor = [UIColor blackColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
//white border part
[imageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top