Это происходит потому, что ваши анимации противоречат анимации кнопок по умолчанию.
Чтобы решить эту проблему, вы можете создать собственный класс дочернего 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
.
Недостатком этого подхода является то, что в процессе анимации текст потемнеет. Возможно, есть способ переопределить это (я не смог быстро определить, как), поэтому альтернативный подход к этому решению - использовать UILabel вместо UIButton и установить прослушиватель кликов.
Или другой подход, который вы, возможно, захотите рассмотреть, помещает customLabel за UIButton и выполняет анимацию на ярлыке при нажатии кнопки. Хотя этот подход кажется несколько «взломанным», преимущество заключается в том, что кнопка не отключается во время анимации ярлыка, что означает, что вы можете регистрировать быстрые последовательные нажатия кнопок (хотя похоже, что цель вашей кнопки заключается в регистрации пользователя, в этом случае это, вероятно, не понадобится для вас).
Спасибо! Я проверю это, когда буду на своем ноутбуке. –
Работает отлично! –
Приветственный помощник :) –