EXTRAIT DE CODE:
extension UIView {
// OUTPUT 1
func dropShadow(scale: Bool = true) {
layer.masksToBounds = false
layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = 0.5
layer.shadowOffset = CGSize(width: -1, height: 1)
layer.shadowRadius = 1
layer.shadowPath = UIBezierPath(rect: bounds).cgPath
layer.shouldRasterize = true
layer.rasterizationScale = scale ? UIScreen.main.scale : 1
}
// OUTPUT 2
func dropShadow(color: UIColor, opacity: Float = 0.5, offSet: CGSize, radius: CGFloat = 1, scale: Bool = true) {
layer.masksToBounds = false
layer.shadowColor = color.cgColor
layer.shadowOpacity = opacity
layer.shadowOffset = offSet
layer.shadowRadius = radius
layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
layer.shouldRasterize = true
layer.rasterizationScale = scale ? UIScreen.main.scale : 1
}
}
REMARQUE: Si vous ne passez pas tout paramètre de la fonction, puis l'échelle argument sera le cas par défaut. Vous pouvez définir une valeur par défaut pour un paramètre dans une fonction en lui attribuant une valeur pour le paramètre après que le paramètre de type. Si une valeur par défaut est défini, vous pouvez omettre ce paramètre lors de l'appel de la fonction.
SORTIE 1:
shadowView.dropShadow()
SORTIE 2:
shadowView.dropShadow(color: .red, opacity: 1, offSet: CGSize(width: -1, height: 1), radius: 3, scale: true)
layer.shouldRasterize = true
va faire de l'ombre à la statique et à cause d'une ombre pour l'état initial de l' UIView
. Donc je vous conseille de ne pas utiliser layer.shouldRasterize = true
dans la dynamique des mises en page comme la vue à l'intérieur d'un UITableViewCell
.