iOS 7 UITableView: как удалить пространство между панелью навигации и первой ячейкой
моя проблема: с iOS 7 в группе UITableView есть промежуток от верхней части таблицы и первой ячейки.
странно, что когда я загружаю содержимое в первый раз, таблица выглядит нормально, как на первом изображении, но когда я прокручиваю вниз, появляется пробел между верхней и первой ячейкой, как во второй:
со стилем plain это поведение не вышло, но, к сожалению, мне нужно использовать сгруппированное представление таблицы.
любые идеи о ?
16 ответов:
ответ был очень смешной для меня и моей команды, и работал как шарм
- в Построителе интерфейса просто переместите tableview под другим видом в иерархии представлений.
причина:
мы наблюдали, что это происходит только для первого представления в иерархии представлений, если это первое представление является UITableView. Итак, все другие подобные UITableViews не имеют этого раздражающего раздела, кроме первого. Мы попытались переместить UITableView из первого места в иерархии представлений, и все работало так, как ожидалось.
это решить мою аналогичную проблему:
if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){ tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0); }
перейдите к инспектору атрибутов контроллера вида, выбрав xib или контроллер в раскадровке. Снимите флажок Настроить Вставки Прокрутки на планировка. Это решит проблему
Если вы используете UITableView с сгруппированным стилем и только 1 группой, используйте простой стиль вместо решения вашей проблемы.
UITableViewController *tableViewController; tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
самое простое решение этой проблемы в сгруппированном виде
tableView- это:tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
ребята! У меня была такая же проблема. TableView появился со свободным пространством между навигационной панелью и первой ячейкой. Этот код спас меня:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0) { return 10; } else return 2; }
было пространство над самим UITableView, а также между ячейками. Нашел свое решение в 2 разных ответов..разместите его снова, чтобы никто не пропустил оба решения.
это удалило пространство сверху:
self.automaticallyAdjustsScrollViewInsets = NO;и это удалило пробелы под ячейками : Установка атрибута' Style 'UITableView в 'Plain'
Я работаю с
Xcode 7.3.1,iOS9иswift 2. Я хотел бы поделиться тем, что сработало для меня:просто добавьте это в вас
ViewDidLoadметодself.automaticallyAdjustsScrollViewInsets = false;
начиная с iOS 7, Вы автоматически получаете заголовок группы и некоторое пространство. Сравните свое приложение с приложением настроек, и вы увидите. Вы можете обойти это, сообщив UITableView, чтобы установить высоту заголовка как можно меньше. Смотрите Как скрыть заголовок первой группы.
Я понимаю, что это был ответ давно, но для тех, кто еще сталкивается с подобной ситуацией, я поделюсь тем, что в конечном итоге работает для меня:
Если вы используете xib, выберите представление верхнего уровня и установите "строка состояния" в " нет " в области имитируемых метрик инспектора атрибутов. Исправлена моя проблема с интервалом.
для меня это не работает
self.automaticallyAdjustsScrollViewInsets = NO;это только вызвало представление таблицы, чтобы сидеть под панелью навигации.
что сработало для меня, так это войти в мою раскадровку и изменить размер моего tableView. Кажется, у моего tableView был пробел 20px вверху, чтобы разрешить строку состояния. Я поднял его, и все выстроилось идеально.
Я видел это дополнительное пространство в верхней части одного из моих представлений таблицы в очень странной ситуации.
после того, как я добавил
UIScrollViewкак корневое представление моего первого контроллера в моем навигационном стеке, если я представил следующий контроллер какShow Detailsegue, мой следующий контроллер будет иметь пространство над его табличным представлением.решение для меня было изменить segue на
Present Modallyи все вернулось на круги своя.самая странная часть изменения segue это было до я добавил свой корневой вид, являющийся
UIScrollViewмойShow Detailsegue представлял следующий контроллер модально. И все же после я добавил кореньUIScrollViewнаShow Detailsegue was толкал на следующем контроллере (который был не то, что я хотел).


