За два дня борьбы со скроллером глаз мой замылился, и я вообще не могу понять, как решить задачку.
Есть скроллер. В нем есть айтемы. Размер каждого айтема 1045 пикселей, а еще у них расстояние между 110. Итого от центра одного айтема до центра другого 1155 пикселей. Еще у них есть y (который тоже считается от центра). Итого это выглядит так:
Позиции скроллера, при которых соответствующая локация становится по центру, вычислены опытным путем. Как это сделать формулой - не представляю. Я уверена, должно быть какое-то решение, ведь в том же хаксе и экшен-скрипте скроллеры тоже были геморройные, но все же с ними можно было нормальное что-то сделать. А тут - никак. Возможно, у меня и правда глаз настолько замылился, что я тупо не вижу простейшее решение.
Пока что у меня существует такое:
позиция = 1 - модуль(Y текущей локации) / высоту всего скроллера
Плюс если элемент первый или последний, там не катит такое условие, они у меня отдельно выставляются на 1 и 0 соответственно. Но они-то работают. А вот остальное - нет.
Нет, не глупый. Сама не понимаю, почему так. То есть когда высота скроллера(*) 800, то все правильно: 0.25, 0.5, 0.75. Когда высота 1167, то происходит эта хрень с 0.2, 0.5, 0.8. В принципе, можно оба скроллера привести к высоте 800. Но тогда на весь экран будет помешаться лишь одна локация и крошечные огрызки соседних, а это не красиво.
под высотой скроллера я подразумеваю высоту в окне. В общем, не ту, которая 5715.
Повесила на скроллер обработчик, который в консоли выводит текущую позицию скроллера. Потом запустила и скроллила. Когда локация была по центру, смотрела данные. Вот оттуда и взялось. А откуда оно берется у скроллера - мне не понятно.