Пользователи iPhone по всему миру неожиданно углубились в изучение приложения будильника после открытия, которое разрушило привычные представления о его работе. Оказалось, что знакомый всем интерфейс выбора времени скрывает любопытную техническую особенность.
Пользователь твиттера skydotcs обнаружил, что колесо выбора времени в будильнике iPhone не круговое, как логично было бы предположить. Вместо этого Apple реализовала "просто очень длинный список" с определённой конечной точкой. Если прокручивать время достаточно долго (что занимает не так много усилий), приложение остановится на отметке 4:39 PM (или 16:39) и дальше прокручиваться не будет.
Другой исследователь, SkyVelleity, провёл детальный анализ работы приложения и выяснил, почему приложение работает так. По его данным, приложение использует всего 7 ячеек для отображения часов, создавая иллюзию бесконечной прокрутки через повторное использование элементов интерфейса.
Здесь используется выборщик времени в центре, слева показаны часы с активными ячейками, а справа – все ячейки, задействованные в центральном селекторе. Когда час собирается появиться на экране, система находит свободную ячейку, которая только что исчезла с экрана, перемещает её на другую сторону, меняет отображаемое число – и вуаля, магическая бесконечная прокрутка.
Эта технология называется TableView, но даже с 7 ячейками реализация оказалась сложнее ожидаемого.
Загвоздка в том, что системе всё равно нужно указать количество элементов в списке. Здесь я говорю "10,000" – как только достигается этот лимит, попадаешь в "конец" списка и понимаешь, что это вовсе не какой-то причудливый 3D-круговой селектор, а просто 7 маленьких текстовых полей, используемых снова и снова.
Любопытные умы нашли объяснение конкретной конечной точке 4:39 PM. Пользователь ApoStructura провёл расчёты и выяснил, что Apple, очевидно, установила начальную точку посередине и добавила 999 часов и 999 минут, что и привело к данному результату.
Владельцы Android-устройств могут найти такое решение особенно странным, учитывая визуально круговой селектор в их системе. Впрочем, один из пользователей утверждает, что и Android-селектор остановится после выполнения 264 полных оборотов.
Интересно, что аналогичная особенность обнаружилась и в календарном селекторе – он также имеет конечную точку, останавливаясь на 18 апреля 10000 года.
Источник новости: shazoo.ru