2016-08-04 4 views
0

Я пытаюсь создать эластичный заголовок вида таблицы, и я увидел этот код на пост онлайн:TableView ContentInset и ContentOffset

override func viewDidLoad() { 
    tableView.contentInset = UIEdgeInsets(top: kTableHeaderHeight, left: 0, bottom: 0, right: 0) 
    tableView.contentOffset = CGPoint(x: 0, , y: -kTableHeaderHeight) 
    updateHeaderView() 
} 

Я имею немного трудно понять этот код.

Поэтому в основном то, что она делает это (Предполагается, что экран составляет от 0 до 500 в высоту и kTableHeaderHeight = 200):

1) Это первое добавление отступы в верхней части tableView, перемещая его вверх по kTableHeaderHeight в contentInset (этот шаг относится к кадру таблицыView). Итак, теперь существует таблица tableView с -200 до 500?

2) Затем он перемещает свои границы на -kTableHeaderHeight. Так делает contentOffset просто сделать его прокручиваемым в области -200 до 500? Так почему же мы используем contentOffset в -kTableHeaderHeight?

ответ

1

1) Нет, если вставка является положительным, то он делает вид таблицы площадь меньше, как 200,500

2) contentOffset это состояние Tableview. поэтому, когда вы устанавливаете смещение на -200, он перемещает нулевую точку содержимого до 200 из нулевой точки таблицы, независимо от содержимого. в основном он помещает текущее содержимое представления таблицы в место, где оно должно быть связано с вставкой

Так что же этот код делает резерв 200 точек места для настраиваемого заголовка, который никогда не перекрывается с содержимым ячеек таблицы (в качестве заголовков или нижних колонтитулов табличного представления)