it-swarm.com.ru

iOS 7 UITableView: как убрать пробел между панелью навигации и первой ячейкой

моя проблема: с iOS 7 в сгруппированных UITableView есть пробел в верхней части таблицы и первой ячейке.

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

enter image description hereenter image description here

С простым стилем это поведение не вышло, но, к сожалению, мне нужно использовать сгруппированное табличное представление.

Есть идеи?

59
Fry

Просто добавьте это в свой метод ViewDidLoad

self.automaticallyAdjustsScrollViewInsets = NO;
133
Slavcho

Ответ был очень забавным для меня и моей команды, и работал как шарм

  • В Интерфейсном Разработчике, просто переместите табличное представление под другое представление в иерархии представления.

ПРИЧИНА:

Мы заметили, что это происходит только для первого представления в иерархии представлений, если это первое представление является UITableView . Таким образом, все другие подобные UITableView не имеют этого раздражающего раздела, кроме первого . Мы попытались вывести UITableView из первого места в иерархии представлений, и все заработало как положено.

37
Giorgos Ath

это решает мою похожую проблему:

if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){
tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);
}
25
Alex

Перейдите в инспектор атрибутов View Controller, выбрав xib или контроллер в раскадровке. Снимите флажок Настроить вкладки просмотра прокрутки in Макет . Это решит проблемуenter image description here

16
Muhammad_Awaab

Если вы используете UITableView с сгруппированным стилем и только с 1 группой, используйте простой стиль вместо решения вашей проблемы.

UITableViewController *tableViewController;
tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
12
clmntcrl

Простейшее решение этой проблемы в сгруппированном типе tableView:

tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
3
Venu Gopal Tewari

Для решения этой проблемы убедитесь, что вы сняли отметку с этого поля в ViewController:

На ViewController >> Attibutes Inspector >> Макет (не отмечен - Настроить вкладки просмотра прокрутки)

 enter image description here

если этого недостаточно, попробуйте это в TableView, установите Style на Plain:

 Example image

Это решит вашу проблему

3
Daniel Beltrami

ребята! У меня была такая же проблема. TableView появился со свободным пространством между панелью навигации и первой ячейкой . Этот код спас меня:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return 10;
    }
    else return 2;
}
2
Hot'n'Young

Над самим UITableView было пространство, а также между ячейками. Нашли мое решение в 2-х разных ответах выше ... разместив его снова, чтобы никто не пропустил оба решения.

Это убрало пространство сверху:

self.automaticallyAdjustsScrollViewInsets = NO;

и это удалило пробелы ниже ячеек: Установка атрибута «Стиль» UITableView в «Простой»

1
love2script12

Я работаю с Xcode 7.3.1, iOS9 и Swift 2. Я хотел бы поделиться тем, что работает для меня:

Просто добавьте это в свой метод ViewDidLoad

self.automaticallyAdjustsScrollViewInsets = false;
1
IPL10

Возникла похожая проблема, даже при автоматической установке AdjustsScrollViewInsets на NO. Это решено для меня:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
    return CGFLOAT_MIN;
}
0
iuricernov

Я понимаю, что на это ответили давным-давно, но для всех, кто сталкивается с подобной ситуацией, я поделюсь тем, что в итоге помогло мне:

Если вы используете xib, выберите представление верхнего уровня и установите для «Строки состояния» значение «Нет» в области имитированных метрик Инспектора атрибутов. Исправлена ​​проблема с пробелами.

0
Luke

Для меня это не сработало

self.automaticallyAdjustsScrollViewInsets = NO;

Это только заставило табличное представление сидеть под навигационной панелью.

Для меня было полезно войти в раскадровку и изменить размер моего tableView. Кажется, что у моего tableView был разрыв в 20px наверху, чтобы учесть статусBar. Я масштабировал его, и все выстроилось идеально.

0
vinylDeveloper

Начиная с iOS 7, вы автоматически получаете заголовок группы и некоторое пространство. Сравните ваше приложение с приложением Настройки, и вы увидите. Вы можете обойти это, сказав UITableView, чтобы установить высоту заголовка как можно меньше. Смотрите Как скрыть первый заголовок группы .

0
Chuck Krutsinger

Я видел это дополнительное пространство наверху одного из моих табличных представлений в очень странной ситуации. 

После того, как я добавил UIScrollView в качестве корневого представления моего первого контроллера в моем стеке навигации, если я представлю следующий контроллер как последовательность Show Detail, у моего следующего контроллера будет пространство над его табличным представлением.

Решение для меня состояло в том, чтобы изменить sege на Present Modally, и все вернулось на круги своя.

Самая странная часть изменения segue состояла в том, что раньше я добавил, что мой корневой вид был UIScrollView, а мой Show Detail представлял следующий контроллер модально. Тем не менее после я добавил корень UIScrollView, а переход Show Detail был pushing на следующем контроллере (что было не то, что я хотел).

0
Adam Johns