Di solito, semplicemente impostando il tipo di pulsante su Personalizzato funziona per me, ma per altri motivi ho dovuto sottoclassare UIButton e riportare il tipo di pulsante sul valore predefinito (Sistema), quindi il lampeggiamento riappariva.
L'impostazione UIView.setAnimationsEnabled(false)
prima di cambiare il titolo e poi di nuovo vero dopo non ha evitato il battito di ciglia, non importa se ho chiamato self.layoutIfNeeded()
o meno.
Questo, e solo questo nel seguente esatto ordine, ha funzionato per me con iOS 9 e 10 beta:
1) Crea una sottoclasse per UIButton (non dimenticare di impostare anche la classe personalizzata per il pulsante nello Storyboard).
2) Sostituisci setTitle:forState:
come segue:
override func setTitle(title: String?, forState state: UIControlState) {
UIView.performWithoutAnimation({
super.setTitle(title, forState: state)
self.layoutIfNeeded()
})
}
In Interface Builder, è possibile lasciare il tipo di pulsante su Sistema, non è necessario modificarlo in Tipo personalizzato affinché questo approccio funzioni.
Spero che questo aiuti qualcun altro, ho lottato per così tanto tempo con i fastidiosi pulsanti lampeggianti che spero di evitarlo ad altri;)