ios calayer shadow

ios - Suelta una sombra a la derecha e inferior de la vista



calayer shadow (5)

Creo que tu compensación de sombras es incorrecta. Debería ser {10, 10} como:

[layer setShadowOffset:CGSizeMake( 10 , 10 ) ];

Tengo que dejar caer una sombra a la derecha e inferior de la vista. Estoy haciendo esto en el constructor de interfaz. Pero veo que la sombra cayó sobre ella. Probé diferentes tamaños, pero no pude conseguirlo.

layer.masksToBound=No layer.shadowOpacity=0.15 layer.shadowRadius=2 layer.shadowOffSet={10,-10} //Values being set in Interfacebuilder.

Aún así, esta sombra cae en la parte superior. ¿Qué debo hacer para llegar al fondo de la vista?


Descubrí que estos valores dan un buen resultado:

myView.layer.shadowColor = UIColor.black.cgColor myView.layer.shadowOpacity = 0.25 myView.layer.shadowRadius = 3 myView.layer.shadowOffset = CGSize(width: 1, height: 1) // shadow on the bottom right


En Swift 3 , CGSizeMake ya no existe. Se ha cambiado a CGSize(width: 20, height: 10) . Entonces el shadowOffset se puede configurar así en Swift 3 :

myView.layer.shadowOffset = CGSize(width: 20, height: 10)


Hola, he usado el código siguiente, te proporcionará la sombra que deseas.

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:_viewShadow.bounds]; _viewShadow.layer.masksToBounds = NO; _viewShadow.layer.shadowColor = [UIColor blackColor].CGColor; _viewShadow.layer.shadowOffset = CGSizeMake(10.0f, 5.0f); /*Change value of X n Y as per your need of shadow to appear to like right bottom or left bottom or so on*/ _viewShadow.layer.shadowOpacity = 0.5f; _viewShadow.layer.shadowPath = shadowPath.CGPath;

También masksToBounds es imp ya que deshabilita el recorte de subcapas que se extienden más allá de los límites de la vista. Si lo pones SÍ, entonces no verás sombras, ya que recorta la subcapa, sino que en NO permite extender la capa.


Pruebe el siguiente código, podría ayudarlo

myView.layer.shadowColor = [UIColor purpleColor].CGColor; myView.layer.shadowOffset = CGSizeMake(5, 5); myView.layer.shadowOpacity = 1; myView.layer.shadowRadius = 1.0; myView.layer.maskToBounds = NO;

Probé este código y está funcionando y la salida es: