Zwykle po prostu ustawienie typu przycisku na Niestandardowy działa dla mnie, ale z innych powodów musiałem podklasować UIButton i ustawić typ przycisku z powrotem na domyślny (System), więc miganie pojawiło się ponownie.
Ustawienie UIView.setAnimationsEnabled(false)
przed zmianą tytułu, a potem ponownie na prawdę, nie uniknęło mrugania dla mnie, bez względu na to, czy zadzwoniłem, self.layoutIfNeeded()
czy nie.
To i tylko to w następującej dokładnej kolejności działało dla mnie z iOS 9 i 10 beta:
1) Utwórz podklasę dla UIButton (nie zapomnij też ustawić niestandardowej klasy dla przycisku w Storyboard).
2) Zastąp setTitle:forState:
w następujący sposób:
override func setTitle(title: String?, forState state: UIControlState) {
UIView.performWithoutAnimation({
super.setTitle(title, forState: state)
self.layoutIfNeeded()
})
}
W Konstruktorze interfejsów możesz pozostawić typ przycisku na System, nie musisz zmieniać go na Typ niestandardowy, aby to podejście działało.
Mam nadzieję, że to pomaga komuś innemu, tak długo walczyłem z irytującymi migającymi przyciskami, że mam nadzieję, że uniknę tego innym;)