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


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

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

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

любые идеи о ?

16 58

16 ответов:

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

self.automaticallyAdjustsScrollViewInsets = NO;

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

  • в Построителе интерфейса просто переместите tableview под другим видом в иерархии представлений.

причина:

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

это решить мою аналогичную проблему:

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

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

Если вы используете 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;

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

On ViewController > > Attibutes Inspector > > Layout (unchecked -Настройка Прокрутки Вставки)

enter image description here

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

Example image

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

начиная с 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 толкал на следующем контроллере (который был не то, что я хотел).

была аналогичная проблема, даже установка automaticallyAdjustsScrollViewInsets в НЕТ. Это решило для меня:

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

на UIViewController.h iOS9 SDK есть метод:

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES

это не свойство, так что

self.automaticallyAdjustsScrollViewInsets = NO; 

должно быть

-(BOOL)automaticallyAdjustsScrollViewInsets{   
     return NO;
}