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.
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:
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.
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)
Je pense que votre décalage d'ombre est incorrect. Il devrait ressembler {10, 10} à:
[layer setShadowOffset:CGSizeMake( 10 , 10 ) ];