Заголовок раздела UITableView заползает под панель навигации

Из-за того, что стиль панели навигации полупрозрачный, я спрятал свой первый заголовок раздела (раздел № 0) под панелью навигации.

Я знаю, что об этом уже спрашивали, и обходной путь:

 self.navController.navigationBar.translucent = YES;

Это делает проблематичный вид правильным — заголовок раздела отображается под панелью навигации, а не прячется за ней, чего я и хочу.

Однако это делает недействительными мои другие дизайны представлений и оставляет лишние пробелы во всех из них, прямо под моей панелью навигации.

Как мне получить заголовок раздела в правильном месте?


person Nirav Bhatt    schedule 03.12.2012    source источник


Ответы (4)


Решено:

  • Открыть файл раскадровки
  • выберите UITableView
  • В инспекторе атрибутов -> Размер прокрутки -> Вставки содержимого установите Top = 44 (или в зависимости от высоты вашей панели навигации).

Смотрите изображение ниже - оно находится в разделе размеров:

введите здесь описание изображения

А вот как это исправить программно.

person Nirav Bhatt    schedule 04.12.2012
comment
Где инспектор атрибутов? - person Gank; 10.06.2014
comment
В инспекторе нет вставок содержимого, только вставки индикаторов прокрутки. - person Distortum; 30.07.2014
comment
@SteveTaylor - проверьте, не спрятали ли вы его случайно с помощью кнопки «Скрыть». - person Nirav Bhatt; 30.07.2014
comment
Я снова проверил. Это не скрыто. Его просто нет. Тем не менее, я решил эту проблему не с помощью магических чисел, а вместо этого вставив свой UITableViewController в UINavigationViewController. - person Distortum; 30.07.2014

Чтобы решить эту проблему при использовании SVPullToRefresh. Я создал метод ниже и вместо [self.tableView.pullToRefreshView stopAnimating];

-(void)stopPullToRefreshAnimation
{
    [self.tableView.pullToRefreshView stopAnimating]; // call to stop animation

    UIEdgeInsets inset = UIEdgeInsetsMake(44, 0, 0, 0);
    self.tableView.contentInset = inset;
    self.tableView.scrollIndicatorInsets = inset;
} //stopPullToRefreshAnimation
person ShawnG    schedule 15.04.2014
comment
свойство pulltorefreshview не найдено в объекте типа tableview - person Kyle Griffith; 28.09.2016

Для других, у которых возникла эта проблема при использовании (SVPullToRefresh).

Это можно решить, изменив view.originalTopInset в UIScrollView+SVPullToRefresh.m на любую точку, с которой вы хотите, чтобы ваш заголовок начинался.

person Abuirshaid    schedule 05.01.2014
comment
Тарик, не могли бы вы поделиться подробностями об этом? После начальной операции прокрутки я никогда не смогу увидеть свой первый элемент tableview, он ползет под navcontroller/bar. Я вижу в коде SVPullToRefresh исходную переменную TopInset, но она используется во многих местах — где мне ее изменить и как? - person Mike Kogan; 12.03.2014

Самое простое решение:

tableView.tableHeaderView = UIView()
person Joshua Hart    schedule 16.03.2021