Normalerweise funktioniert es für mich, einfach den Schaltflächentyp auf Benutzerdefiniert zu setzen. Aus anderen Gründen musste ich UIButton unterordnen und den Schaltflächentyp auf den Standardwert (System) zurücksetzen, damit das Blinken wieder angezeigt wurde.
Das Einstellen UIView.setAnimationsEnabled(false)
vor dem Ändern des Titels und danach wieder auf "Wahr" hat das Blinken für mich nicht vermieden, egal ob ich angerufen habe self.layoutIfNeeded()
oder nicht.
Dies und nur dies in der folgenden genauen Reihenfolge funktionierte bei iOS 9 und 10 Beta:
1) Erstellen Sie eine Unterklasse für UIButton (vergessen Sie nicht, die benutzerdefinierte Klasse für die Schaltfläche auch im Storyboard festzulegen).
2) Überschreiben Sie setTitle:forState:
wie folgt:
override func setTitle(title: String?, forState state: UIControlState) {
UIView.performWithoutAnimation({
super.setTitle(title, forState: state)
self.layoutIfNeeded()
})
}
In Interface Builder können Sie den Schaltflächentyp dem System überlassen, ohne ihn in Benutzerdefinierten Typ ändern zu müssen, damit dieser Ansatz funktioniert.
Ich hoffe das hilft jemand anderem, ich habe so lange mit den nervigen blinkenden Knöpfen gekämpft, dass ich hoffe, es anderen zu vermeiden;)