J'ajoute un gradient de bouton à l'aide du code ci-dessous
lazy var submitBtn: UIButton = {
let btn = UIButton(type: .system)
btn.translatesAutoresizingMaskIntoConstraints = false
btn.setTitle("SUBMIT", for: .normal)
return btn
}()
3 Réponses :
lazy var submitBtn: UIButton = {
let btn = UIButton(type: .custom) //Set custom instead of system
btn.translatesAutoresizingMaskIntoConstraints = false
btn.setTitle("SUBMIT", for: .normal)
return btn
}()
Je pense que le problème ici est que Self.bounds est 0 au point que vous appelez votre fonction de gradient. Essayez de l'appeler ultérieurement, par exemple ViewWillappear ou appelez la vue.Layoutsubviews pour déclencher IewDidLayouTouSubs () P>
Testez-le en imprimant Self.Bounds
Je réglais manuellement le cadre du bouton CGRRECT (x: 0, Y: 0, largeur: 100, hauteur: 40) code>, événement que les contraintes de présentation sont ajoutées et TraduitAutoresizingMaskintOINTAINTAINES code> est réglé sur faux code> fait ce travail.
Je ne sais pas pourquoi les limites sont 0 lorsque les contraintes sont définies.
Essayez d'utiliser la fonction à l'intérieur Viewwillappeare ()
Aussi pourquoi ne pas appliquer le gradient dans le bouton du début sans fonction séparée? Cela fera que le bouton apparaisse au gradient déjà intégré. p>
Si vous souhaitez définir le gradient W \ A condition, vous pouvez utiliser le suivant P>
func displayButton(condition: Bool){
lazy var submitBtn: UIButton = {
let btn = UIButton(type: .system)
btn.translatesAutoresizingMaskIntoConstraints = false
btn.setTitle("SUBMIT", for: .normal)
if condition == true {
//set the gradient here
return btn
} else if condition == false
return btn
}
}()
override func viewDidLoad(){
super.viewDidLoad()
//here you can set the condition to show the gradient or not depending on what you want
displayButton(true) //will show the gradient
displayButton(false) // will show without gradient
}
Vous passez l'emplacement NIL et X, la position Y est zéro et vérifiez le code de gradient.
L'affichage de gradient seulement si je place
initstyle () code> dansViewDidAppear () code> et pas dansViewDidLayouTouSubviews () code>, qui crée un retard dans l'affichage du gradient de boutons.