Подтвердить что ты не робот

Заголовок UITableVIew без подпрыгивания при вытаскивании

У меня есть UITableView, который я могу легко добавить в заголовок. Многие приложения (например, Facebook, для просмотра событий) имеют заголовок, который, когда вы выходите вниз, заголовок остается включенным, а остальная часть таблицы (t21 > ) подпрыгивает. При прокрутке заголовка исчезает. Как я могу достичь этой функциональности?

Прямо сейчас, когда я вытаскиваю UITableView, даже заголовок также отскакивает от

4b9b3361

Ответ 1

Вы можете легко добиться этого эффекта, добавив subview в представление заголовка и отрегулировав его frame или transform, когда представление таблицы прокручивается за верхнюю часть, т.е. компонент y его contentOffset становится отрицательный.

Пример (в подклассе UITableViewController):

- (void)viewDidLoad
{
    [super viewDidLoad];
    CGFloat headerHeight = 64.0f;
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, headerHeight)];
    UIView *headerContentView = [[UIView alloc] initWithFrame:headerView.bounds];
    headerContentView.backgroundColor = [UIColor greenColor];
    headerContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [headerView addSubview:headerContentView];
    self.tableView.tableHeaderView = headerView;
}

//Note: UITableView is a subclass of UIScrollView, so we
//      can use UIScrollViewDelegate methods.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat offsetY = scrollView.contentOffset.y;
    UIView *headerContentView = self.tableView.tableHeaderView.subviews[0];
    headerContentView.transform = CGAffineTransformMakeTranslation(0, MIN(offsetY, 0));
}

(чтобы это было просто, я только что использовал первый подзаголовок фактического заголовка в scrollViewDidScroll:, вместо этого вы можете использовать свойство для этого.)

Ответ 2

Скорее всего, ваш UITableView работает правильно. Заголовки разделов по умолчанию являются липкими в таблицах стиля Plain. По мере того, как вы прокручиваете вниз, заголовок остается в верхней части кадра UITableView, пока заголовок следующего раздела не отталкивает его. Противоположность возникает при прокрутке вверх. И наоборот, вы получаете липкое поведение на нижних колонтитулах в нижней части рамки UITableView.

РЕДАКТИРОВАТЬ Непонятный исходный вопрос:

Я бы предложил использовать заголовок раздела, а не заголовок таблицы, чтобы получить липкое поведение, которое вы ищете.

Включите раздел в свои данные без строк и поместите представление заголовка таблицы в это представление заголовка раздела.

Ответ 3

Существует два способа установки заголовка таблицы:

  • Используя свойство .tableHeaderView напрямую (этот заголовок прокручивается вместе с таблицей)

  • Переопределение функции - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section (этот заголовок остается статичным с разделом)

По звукам вы должны использовать второй метод вместо использования свойства .tableHeaderView