J'ai ajouté une ombre à un UIView, mais obtenir le résultat suivant:UIView ombre à l'aide BezierPath compense massivement l'ombre
Le code est le suivant:
mainView.layer.cornerRadius = 8
mainView.layer.shadowColor = UIColor.black.cgColor
mainView.layer.shadowOpacity = 0.2
mainView.layer.shadowRadius = 10
mainView.clipsToBounds = false
mainView.backgroundColor = UIColor.blue
mainView.layer.shadowPath = UIBezierPath(roundedRect: mainView.frame, cornerRadius: 8).cgPath
Compte tenu que j'ai donné au shadowPath le cadre exact comme la vue bleue (mainView), je ne comprends pas pourquoi l'ombre est si décalée. Je comprends que je peux potentiellement résoudre ce problème en utilisant la propriété shadowOffset, mais la raison pour laquelle j'essaye d'utiliser shadowPath est pas d'utiliser shadowOffset étant donné qu'il a potentiellement des problèmes de performance à l'échelle.
Mise à jour: Après avoir fixé mainView.frame à mainView.bounds, l'ombre est correctement alignée. Cependant, l'ombre semble être légèrement décalée encore au sommet du MainView (ayant une ombre plus forte au-dessus):
essayez de changer mainView.frame en mainView.bounds –