通常、ボタンの種類をカスタムに設定するだけでうまくいきますが、他の理由により、UIButtonをサブクラス化してボタンの種類をデフォルト(システム)に戻す必要があったため、点滅が再表示されました。
UIView.setAnimationsEnabled(false)
タイトルを変更する前に設定し、その後再びtrueに設定しても、電話をかけたかどうかに関係なく、点滅は回避されませんでしたself.layoutIfNeeded()
でした。
これは、次の正確な順序でのみ、iOS 9および10ベータで動作しました。
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のままにしておくことができます。このアプローチを機能させるためにボタンタイプをカスタムタイプに変更する必要はありません。
これが他の人の役に立つことを願っています。迷惑な点滅ボタンで他の人にそれを避けたいと長い間苦労してきました;)