Тактильная обратная связь во время анимации — имитация UIPickerView

Я создал круг с колодой карт, которую пользователь может вращать, чтобы выбрать одну. После того, как панорамирование заканчивается, оно привязывается к заданному углу с красивой анимацией замедления. В будущем будет какое-то указание, что выбрана карта под углом 45 градусов. Я хотел бы указать, что выбор изменился с помощью тактильной обратной связи, как и в UIPickerView. Сейчас я пытаюсь добавить тактильную обратную связь к анимации замедления. Моя идея заключалась в том, чтобы сделать генератор обратной связи и вызывать .selectionChanged() в анимации столько раз, сколько карт было пропущено. Но пока я решил просто назвать это 3 раза. К сожалению, ни одна из моих идей не работает - даже создать отдельный UIViewPropertyAnimator не получается. Я полагаю, что я должен помещать анимационные свойства только в закрытие анимации. Сам аниматор работает правильно - работает анимация замедления.

        animator.addAnimations {
            UIView.animateKeyframes(withDuration: 5.0, delay: 0.0, options: [], animations: {
                UIView.addKeyframe(withRelativeStartTime: 1.0/3.0, relativeDuration: 0.0, animations: {
                    self.selectionGenerator.selectionChanged()
                })
                UIView.addKeyframe(withRelativeStartTime: 2.0/3.0, relativeDuration: 0.0, animations: {
                    self.selectionGenerator.selectionChanged()
                })
                UIView.addKeyframe(withRelativeStartTime: 3.0/3.0, relativeDuration: 0.0, animations: {
                    self.selectionGenerator.selectionChanged()
                })
            })
        }
        animator.startAnimation()

снимать экран

Как я могу имитировать тактильную обратную связь, например, DatePicker , которая вибрирует при изменении выбора?


person 3Qax    schedule 03.12.2019    source источник


Ответы (1)


вы можете добавить тактильную обратную связь, используя HAPTICA https://github.com/efremidze/Haptica и добавьте эту обратную связь в цикл анимации, надеюсь, это сработает... :)

person Shivam Parmar    schedule 03.12.2019
comment
Haptica не использует ничего отличного от того, что я только что сделал. Это просто хорошая оболочка для того же API, который я использую. Почему это должно работать по-другому? - person 3Qax; 03.12.2019