нужна Как реализовывали: рисовали, анимировали и обрабатывали взаимодействие с колесом Где могут пригодиться описанные технологии и возможности О чём расскажу
Нет возможности задавать разное количество слотов на колесе ❌ Нельзя задать разные значения на слотах, менять скорость, пользователь не сможет взаимодействовать •Использовать готовую картинку для отрисовки
и размер колеса Найдём: высоту UIView tg(A) = a / b a = b * tg(A) let angle = 360.0 / slots.count / 2 let height = width * tan(angle * .pi / 180) * 2 Рисуем треугольник 13 ➡
позицию и скорость жеста: location(in:) + velocity(in:) •Нужно следить за изменением угла, который проходит через текущую точку под пальцем пользователя 27 UIPanGestureRecognizer
— колесо крутится до выигрышного слота •Медленный жест — крутится до момента естественной остановки, затем возвращается назад •Если пользователь крутил колесо и потом отпустил — возвращается назад
быстрый жест •Прокрутка до момента естественной остановки: медленный жест •Прокрутка назад до исходного положения: завершение медленного жеста + в случае ошибки и т. п.
кубической кривой Безье График отображает, насколько быстро в зависимости от времени (ось X) меняется значение, которое вы анимируете (ось Y) CAMediaTimingFunction
геометрических фигур, кривых, масок (Core Graphics, CAShapeLayer, UIBezierPath). •Для изменения угла поворота вьюхи, положения, скейлинга можем использовать свойство transform (CGAffineTransform). •Анимации можно реализовать разными способами, и всё зависит от потребностей (UIView.animate, CABasicAnimation, timing functions и используя другие возможности классов CAAnimation).
его самому не так сложно. •Большую непонятную задачу можно разделить на маленькие. Тогда реализовать её будет проще. •Лучшее решение может оказаться простым, если взглянуть на задачу шире. •Кастомные элементы и анимации — это весело. И ещё — полезно для бизнеса. :)