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 Detail
segue, мой следующий контроллер будет иметь пространство над его табличным представлением.решение для меня было изменить segue на
Present Modally
и все вернулось на круги своя.самая странная часть изменения segue это было до я добавил свой корневой вид, являющийся
UIScrollView
мойShow Detail
segue представлял следующий контроллер модально. И все же после я добавил кореньUIScrollView
наShow Detail
segue was толкал на следующем контроллере (который был не то, что я хотел).