UIKit содержит таблицу UITableView
. Это очень удобный компонент для построения интерфейсов. К сожалению, он не справляется с большим количеством ячеек.
Приложение содержит два экрана. Первый создан для отладки. На нём посередине экрана помещена таблица с рамкой. В таблице должны быть показаны 50 ячеек. На втором экране таблица занимает всё пространство. В таблице должен быть показан триллион ячеек.
Основное:
В проекте есть класс TableView
. Необходимо добавить имплементацию, не меняя публичного интерфейса. Таблица должна показывать ячейки класса TableCell
. Высота каждой ячейки - 40, ширина совпадает с шириной таблицы.
Дополнительные: Поддержать переиспользование ранее созданных ячеек. Поддержать поворот телефона, при котором первая видимая ячейка будет сохранять своё положение, относительно верхней границы таблицы.
- Свойство таблицы
dataSource
будет ненулевым сразу после инициализации таблицы. К нему можно обращаться для того, чтобы узнать какое количесство строк должна отображать таблица, а также какой текст должен быть у каждой ячейкиTableCell
. - Размер таблицы на экране и размер контента, который она отображает это разные вещи. Для модификации размера контента можно использовать свойство
contentSize
. - Каждый объект класса
UIView
(и подклассы, например наша таблицаTableView
) удовлетворяют протоколуUICoordinateSpace
. В нём содержатся методы для преобразования между разными системам координат. - Начните с того, что задайте произвольный большой
contentSize
своей таблице (например в инициализаторе) и посмотрите на значенияbounds
иframe
в методеlayoutSubviews()
таблицы при скролле. Обратите внимание когда и как часто вызывается методlayoutSubviews()
.