по моему мнению, у iPhone есть большое преимущество перед другими смартфонами из-за его интуитивно понятных, плавных и приятных на ощупь компонентов прокрутки в UIKit. Я хочу реализовать простую игру с UIKit, которая использует этот вид прокрутки, но я не могу использовать UIScrollView, потому что она недостаточно настраиваема.
Я попытался реализовать эту прокрутку сам и попробовал два разных подхода:
Я использовал UIPanGestureRecognizer и переместил границы своего пользовательского элемента управления в соответствии с переводом, который распознаватель доставляет мне. Чтобы получить плавную прокрутку после поднятия пальца во время движения, я запускаю анимацию. Я использую скорость, которую распознаватель дает мне, и фиксированное время, чтобы вычислить, как далеко он должен прокручиваться после того, как я поднял палец. Я попробовал линейное движение и движение замедления, но оба выглядят странно. (позже)
Я использую OnTouchMoved и OnTouchEnded для реализации прокрутки. В OnTouchMove я перемещаю границы в соответствии с движением пальца. Пока палец движется, я вычисляю разницу в местоположении и времени текущего и последнего касания, чтобы вычислить скорость самостоятельно. Когда палец поднимается, я запускаю анимацию в OnTouchEnded, как в 1., но вместо этого я использую свою вычисленную скорость.
Оба подхода не дают мне желаемых результатов. Подняв палец, прокрутка не продолжается плавно. Кажется, что есть (крутой) изгиб кривой скорости.
Кто-нибудь знает, как яблоко делает эту плавную прокрутку? Мое текущее предположение состоит в том, что моя интерполяция с двумя действительно близкими точками является неточной и не учитывает текущее ускорение.
Спасибо за ваши мысли!
Кие