web-dev-qa-db-fra.com

Déposer une ombre à droite et en bas de uiview

Je dois déposer une ombre à droite et en bas de uiview.Im ce faisant dans le constructeur d'interface.Mais je vois l'ombre portée au-dessus.Essayé différentes tailles.mais impossible de l'obtenir.

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

Encore cette ombre tombe en haut. Que dois-je faire pour arriver au fond de la vue.

31
Honey

Essayez le code suivant, cela pourrait vous aider

    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;

J'ai testé ce code et cela fonctionne et la sortie est:

enter image description here

98
Nitin Gohel

Bonjour, j'ai utilisé le code ci-dessous, il vous fournira l'ombre que vous souhaitez. 

 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;

MasksToBounds est également imp, car il désactive l'écrêtage des sous-couches qui s'étendent au-delà des limites de la vue. Si vous le définissez par OUI, vous ne verrez pas d’ombre car il coupe la sous-couche, sinon, il ne permet pas d’étendre la couche.

6
nikhil84

Dans Swift 3 , CGSizeMake n'existe plus. Il a été changé en CGSize(width: 20, height: 10). Donc la shadowOffset peut être définie comme ceci dans Swift 3

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

Je pense que votre décalage d'ombre est incorrect. Il devrait ressembler {10, 10} à:

[layer setShadowOffset:CGSizeMake( 10 , 10 ) ];
0
Gaurav Singh

J'ai découvert que ces valeurs donnent un bon résultat:

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

 enter image description here

0
Frédéric Adda