UIS-переключатель не работает анимацию во время анимации "onTintColor"
Я хочу анимировать "включенный" цвет UIS-переключателя и поддерживать его интерактивность без каких-либо компромиссов с анимацией включения / выключения. Вот что я попробовал:
Метод анимации с продолжительностью UIView не работает, потому что хорошо... он не должен, 'onTintColor' не указан как свойство анимации UIView. Хорошо.
mySwitch.onTintColor = UIColor.green UIView.animate(withDuration: 10) { mySwitch.onTintColor = UIColor.red }
Следующий. Переход UIView с помощью метода view дает правильное визуальное поведение, однако при взаимодействии с переключателем нарушается стандартная анимация включения / выключения (см. GIF).
UIView.transition(with: mySwitch, duration: 10, options: [.transitionCrossDissolve, .allowUserInteraction], animations: { mySwitch.onTintColor = UIColor.red }) { completed in }
CATransition дает то же поведение, что и нет. 2 (см. GIF).
var transition = CATransition() transition.type = kCATransitionFade transition.duration = 10 mySwitch.layer.add(transition, forKey: kCATransition) mySwitch.onTintColor = UIColor.red
У кого-нибудь есть идеи, как я могу анимировать "onTintColor", не затрагивая анимацию по умолчанию вкл / выкл?
Единственный способ сделать это правильно - создать собственный переключатель?
1 ответ
По умолчанию взаимодействие с пользователем отключено во время анимации. Попробуйте использовать более длинную форму анимации UIView,
animate(withDuration:delay:options:animations:completion:)
и передать в настройках .allowUserInteraction