Я хотел бы иметь возможность предсказать окончательное смещение покоя в UIScrollView после жестов flick. Он не должен быть точным, точным, но достаточно близким, чтобы пользователь не воспринимал разницу (т.е. Он не перемещался слишком мало или больше, чем они используются).
Я знаю, что кто-то спросит, так: Почему? В UIScrollView есть элемент управления, похожий на таблицу. Я хотел бы сделать так, чтобы верхний пункт меню полностью отображался и выравнивался до вершины UIScrollView. Функция пейджинга UIScrollView не совсем то, что я хочу, потому что сильный щелчок не пролетает мимо кратных оценок.
Обработка обычных событий касания достаточно проста. На touchesEnded:withEvent:
я могу прокрутить до ближайшего пункта полного меню. Тяжелая часть - это замедление.
Существуют две константы для скорости торможения, UIScrollViewDecelerationRateNormal
и UIScrollViewDecelerationRateFast
. Их значения равны 0.998 и 0.990 в iPhone OS 3.0. Я попытался выяснить математику, которую использует Apple для замедления движения, но я прихожу пустым.
Если я могу с некоторой точностью предсказать окончательное смещение покоя, то раньше во время замедления я могу просто использовать scrollRectToVisible:animated:
для перемещения к смещению с элементом меню, скрытым в верхней части границ обзора.
Знают ли люди, склонные к математике, что Apple может делать во время замедления? Должен ли я собирать кучу чисел событий замедления, нарисуйте их и придумайте что-нибудь близкое?