これは、アニメーションがデフォルトのボタンアニメーションと競合しているために発生しています。この問題を解決するには
、あなたはUIButtonのカスタム子クラスを作成することができます。
import UIKit
import UIKit
class CustomButton: UIButton {
func animateButton(hex: String) {
// This block disables the default animations
UIButton.performWithoutAnimation {
// This is where you define your custom animation
UIView.transition(with: self, duration:3, options: UIViewAnimationOptions.transitionCrossDissolve, animations: {
self.backgroundColor? = UIColor(hexaString: "#" + hex) }, completion: nil)
// You must call layoutIfNeeded() at the end of the block to prevent layout problems
self.layoutIfNeeded()
}
}
}
そして、この関数を呼び出すために:もちろん
signInButton.animateButton("ffffff") // Pass in your hex string
、あなたのloginButtonのクラスを変更してくださいストーリーボードのUIButton
からCustomButton
まで
このアプローチの欠点は、アニメーション処理中にテキストがまだ暗くなっていることです。これをオーバーライドする方法があるかもしれません(どのようにすばやく判断することができませんでした)ので、このソリューションの代わりの方法は、UIButtonの代わりにUILabelを使用し、クリックリスナーを設定することです。
また、別の方法として、UIButtonの背後にcustomLabelを配置し、ボタンをクリックしたときにラベル上でアニメーションを実行する方法もあります。このアプローチはやや「ハッキリ」と思われますが、ラベルがアニメートされている間はボタンが無効にされないため、迅速なシーケンシャルボタンのプレスを登録することができます(ボタンの目的はユーザーのログイン、この場合、これはおそらくあなたのために必要ではないでしょう)。
ありがとうございました!私は私のラップトップにいるときにこれをテストします。 –
完璧に動作します! –
ようこそメイト:) –