2012-05-25 12 views
11

Tengo una UIView con un relleno translúcido y una sombra paralela. Como el relleno es translúcido, puedo ver la sombra detrás del relleno.¿Cómo solo se muestra una sombra fuera del relleno de una UIView?

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     self.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.8]; 
     self.layer.shadowColor = [UIColor blackColor].CGColor; 
     self.layer.shadowOffset = CGSizeMake(0.0, 0.0); 
     self.layer.shadowOpacity = 0.5; 
     self.layer.shadowRadius = 2.0; 
     self.layer.cornerRadius = 3.0; 
    } 
    return self; 
} 

No me gusta este comportamiento. No puedo ver nada detrás de la vista porque la opacidad del relleno + la opacidad de la sombra> 100%. ¿Cómo lo hago como CSS donde la sombra solo se dibuja fuera del borde de una caja?

.someStyle { 
    background: white; 
    opacity: 0.8; 
    box-shadow: 0 0 1em rgba(0,0,0,0.5); 
} 

Respuesta

-3
self.layer.shadowOffset = CGSizeMake(0.0, 1.0); shadow only on the bottom 
self.layer.shadowOffset = CGSizeMake(1.0, 0.0); shadow only on the right side 
self.layer.shadowOffset = CGSizeMake(1.0, 1.0); shadow on the right and bottom sides. 

compensar la sombra hace exactamente lo que dice. establecerlo en 0,0 no dará lugar a sombras (si su vista no es transparente/translúcida).

+0

¿Qué quiere decir que no resulta en 0,0 sombras? Veo una sombra con 0,0. La fuente de luz es perpendicular a la pantalla, por eso utilicé 0,0. – Pwner

+1

si es posible, ¿puedes publicar una captura de pantalla? –

+0

calvinbhai, bau j saras kam karyu .. –

5

que era capaz de conseguir este efecto deseado usando algo como lo siguiente:

... 
someLayer.backgroundColor = [[UIColor greenColor] CGColor]; 
someLayer.shadowOpacity = 1.0; 
someLayer.shadowOffset = CGSizeMake(10.0, 10.0); 
someLayer.shadowColor = [[UIColor blackColor] CGColor]; 

someLayer.rasterizationScale = [[UIScreen mainScreen] scale]; 
someLayer.shouldRasterize = YES; 
someLayer.opacity = 0.5; 

[[self layer] addSublayer:someLayer]; 
Cuestiones relacionadas