2012-07-30 11 views
5

tengo el mismo problema que el enlace aquí: Can't add a corner radius and a shadowAñadir esquina redonda a UIImageView y display Sombra efecto

si pongo maskToBounds = SÍ, me sale esquinas redondas, pero ninguna sombra Si pongo maskToBounds = NO , Tengo sombra, pero no hay esquinas redondas.

Luego seguí las instrucciones en el enlace anterior, estableciendo maskToBounds = NO, "pero más bien establecí el radio de la esquina y establecí el camino más biselado de la sombra con un rect redondeado. Mantenga el radio de los dos iguales". Pero entonces, ¡no doy vueltas en las esquinas, ni tengo sombra! (por ejemplo, Square Image without Shadow) ¿Podrías por favor ayudarme con esto? No sé qué hice mal. Gracias por adelantado.

self.userImageView.backgroundColor = [UIColor redColor]; 
self.userImageView.clipsToBounds = NO; 
self.userImageView.contentMode = UIViewContentModeCenter; 
self.userImageView.layer.masksToBounds = NO; 

self.userImageView.layer.borderWidth = 1; 
self.userImageView.layer.borderColor = [[UIColor grayColor] CGColor]; 

self.userImageView.layer.shadowOpacity = 1; 
self.userImageView.layer.shadowColor = [[UIColor blackColor] CGColor]; 
self.userImageView.layer.shadowRadius = 8.0f; 
self.userImageView.layer.shadowOffset = CGSizeMake(-3, 0); 
self.userImageView.layer.shouldRasterize = YES; 

self.userImageView.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:[self.userImageView bounds] cornerRadius:10.0f] CGPath]; 

[self addSubview:self.userImageView]; 

Respuesta

18

Lamentablemente, no creo que UIImageView admita la esquina redondeada y la sombra al mismo tiempo.

Sin embargo, puede hacer que la sombra aparezca en la supervista de UIImageView.

CGFloat cornerRadius = 3.0 

UIView *container = [[UIView alloc] initWithFrame:aRect]; 
container.layer.shadowOffset = CGSizeMake(0, 0); 
container.layer.shadowOpacity = 0.8; 
container.layer.shadowRadius = 5.0; 
container.layer.shadowColor = [UIColor redColor].CGColor; 
container.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:container.bounds cornerRadius:cornerRadius] CGPath]; 

self.userImageView.layer.cornerRadius = cornerRadius; 
self.userImageView.layer.masksToBounds = YES; 
self.userImageView.frame = container.bounds; 
[container addSubview:self.userImageView]; 
[self addSubview:container]; 
+0

Creo que su enfoque funcionará, lo intentaré pronto. Gracias por la respuesta. Ha pasado bastante tiempo desde que publiqué la pregunta, estaba muy emocionado de ver una respuesta. – John

+0

¿Qué es 'aRect'? –

+0

aRect es donde desea que su imageView esté (es decir, el marco de imageView cuando no esté en el contenedor) –

Cuestiones relacionadas