Je suis en train de refactoriser un projet Swift 3 en Swift 4 et j'ai rencontré une situation où les boutons qui avaient précédemment des ombres appliquées ne dessinaient plus d'ombre.Ombres ne dessinant pas sur UIButtons
J'utilise ce code pour dessiner l'ombre:
extension UIButton {
func drawShadow() {
self.layer.drawsAsynchronously = true
self.layer.masksToBounds = false
self.layer.shadowColor = UIColor.black.cgColor
self.layer.shadowOffset = CGSize.zero
self.layer.shadowRadius = self.layer.cornerRadius
self.layer.shadowOpacity = 0.5
}
}
J'appelle le code pour dessiner l'ombre dans viewDidLayoutSubviews
en utilisant ce code:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
buttonArray = [self.buttonOne, self.buttonTwo, self.buttonThree, self.buttonFour]
buttonArray.forEach { button in
button.subviews.filter{$0 is UIImageView}.forEach({ imageView in
imageView.contentMode = .scaleAspectFit
})
button.clipsToBounds = false
button.drawShadow()
}
}
J'ai essayé addding le code dans viewDidLayoutSubviews
dans d'autres endroits pour voir si je peux l'obtenir pour dessiner. J'ai essayé viewDidLoad
, viewWillLayoutSubviews
, viewDidAppear
, etc. J'ai essayé de nuking le storyboard et de "recommencer", en plaçant les boutons encore une fois, en nettoyant les données dérivées, nuking le simulateur du terminal et dans Xcode.
Les boutons sont contenus dans UIStackView
. J'ai deux empilements horizontaux contenant deux boutons intégrés dans une stackview verticale. Si quelqu'un a des suggestions concernant quoi d'autre essayer, je me réjouis de vos suggestions. Merci pour la lecture.
Ca y est! J'ai aussi changé le 'cornerRadius'. Je vous remercie! – Adrian