Я не знаю каких-либо сторонних классов, чтобы справиться с этим для вас, но там могут быть некоторые.
Базовой структурой будет UIScrollView, содержащий набор представлений, каждое из которых представляет одну ячейку в сетке. Вы устанавливаете представление прокрутки contentSize
на основе общего количества плиток. Затем вы создаете виды плиток по требованию и помещаете их в представление прокрутки.
Объект-делегат представления прокрутки будет отвечать за мониторинг положения прокрутки, откладывание представлений мозаики по мере их появления и (опционально) удаление представлений мозаики, которые выходят из поля зрения. По сути, именно так работает UITableView: в каждый момент времени существует только около шести экземпляров UITableViewCell, и они перерабатываются при прокрутке вверх и вниз по представлению. (Вообразите поезд, в котором кто-то на заднем конце тянет рельсы и передает их вперед кому-то впереди, опуская их перед поездом. Насколько известно, поезд идет на мили.)
Если вам понадобится разместить все представления самостоятельно, потратьте некоторое время на изучение семейства методов CGRect, включая CGRectDivide
. Они будут полезны при изложении представлений, а также при вычислении того, что видно, а что нет.