Зазвичай просто встановлення типу кнопки на Custom працює для мене, але з інших причин мені потрібно було підкласифікувати UIButton і повернути тип кнопки назад за замовчуванням (System), щоб миготіння знову з’явилося.
Якщо встановити UIView.setAnimationsEnabled(false)
перед тим, як змінити назву, а потім знову встановити істину, це не уникне моргання для мене, незалежно від того, закликав я self.layoutIfNeeded()
чи ні.
Це, і тільки це в наступному точному порядку, працювало для мене з iOS 9 та 10 beta:
1) Створіть підклас для UIButton (не забудьте також встановити спеціальний клас для кнопки на Дошці розкадрувань).
2) Переосмислити setTitle:forState:
наступним чином:
override func setTitle(title: String?, forState state: UIControlState) {
UIView.performWithoutAnimation({
super.setTitle(title, forState: state)
self.layoutIfNeeded()
})
}
У програмі Interface Builder ви можете залишити тип кнопки System, не потрібно змінювати її на Custom Type, щоб цей підхід працював.
Я сподіваюся, що це допомагає комусь іншому, я так довго боровся з набридливими миготливими кнопками, що сподіваюся уникнути цього перед іншими;)