ios - top - uitableview wrapper view




Удалите пустое пространство перед ячейками в UITableView (17)

UIView можно вставить вверху и внизу таблицы (перетаскивание). Задайте свои свойства прозрачными и высотой 1 px. Это делается для удаления дополнительной прокладки перед ячейками.

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

Если я поставлю верхний левый угол UITableView где я хочу, чтобы ячейки были, он не помещает ячейки:

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

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

Как мне это сделать? Есть ли более простой способ?


В 2017 году то, что работает для меня, - это просто одна строка

navigationController? .navigationBar.isTranslucent = false

Я понятия не имею, почему это повлияло бы на это. Возможно, кто-то может объяснить. Но я уверен, что это ответ, который большинство людей будет искать.


В моем случае у меня была UILabel под иерархией UITableView.

Я переместил его «вперед», и появилось пустое пространство. Не уверен, почему, но он работает так, если это что-то под табличным представлением, он скрывает пустое пространство.

Также вы можете попытаться проверить / снять флажок «Настроить прокрутки» в инспекторе контроллера просмотра на раскадровке.


В моем случае я использовал ContainerViewController и помещал в него UITableViewController. После удаления ContainerViewController. Проблемы уходят.


Вы можете использовать этот код в viewDidLoad или viewDidAppear, где создается ваша таблица:

// Remove blank space on header of table view
 videoListUITableView.contentInset = UIEdgeInsetsZero;

// The iOS device = iPhone or iPod Touch
CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

// Set the height of the table on the basis of number of rows
videoListUITableView.frame = CGRectMake(videoListUITableView.frame.origin.x, videoListUITableView.frame.origin.y, videoListUITableView.frame.size.width, iOSDeviceScreenSize.height-100);



// Hide those cell which doesn't contain any kind of data
self.videoListUITableView.tableFooterView = [[UIView alloc] init];

Выберите табличное представление в раскадровке и убедитесь, что для стиля установлено значение «Обычный», а не «Группировка». Этот параметр можно найти на вкладке Inspector атрибутов.


Если вы делаете это на iOS 11, автоматическиAdjustsScrollViewInsets не будет работать, поскольку он устарел, следующий код работал для меня в соответствии с ответом в этом сообщении: https://.com/a/44391269/5476481

        if #available(iOS 11.0, *) {
            tblView.contentInsetAdjustmentBehavior = .never
        } else {
            automaticallyAdjustsScrollViewInsets = false
        }

Надеюсь это поможет.


Может быть предварительно добавлен UIRefreshControl . У меня проблема с кодом:

self.refreshControl = [[UIRefreshControl alloc] init];{
    [self.refreshControl setAttributedTitle:[[NSAttributedString alloc]
                                             initWithString:@"Your string"]];
    [self.refreshControl addTarget:self
                            action:@selector(updateScreen)
                  forControlEvents:UIControlEventValueChanged];

}

Как вы видите, я установил self.refreshController сразу после init

Но если вы установите refreshControl после установки, то верхнее пространство не будет мешать вам.

UIRefreshControl *refreshControl  = [[UIRefreshControl alloc] init];{
    [self.refreshControl setAttributedTitle:[[NSAttributedString alloc]
                                             initWithString:@"Your String"]];
    [self.refreshControl addTarget:self
                            action:@selector(updateScreen)
                  forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;
}

Ошибка Xcode 8 ...

Попробуйте это, если ваш стиль раскадровки UITableView установлен равным Plain.

Установите стиль таблицы в Grouped, а затем обратно в Plain. Это удалило пространство в моем приложении во главе моего UITableView.


Пока UITableView не является первым подзором контроллера представления, пустое пространство не появится.

Решение. Добавьте скрытый / прозрачный объект представления (представления, метки, кнопки и т. Д.) В качестве первого подзадача контроллера представления (на том же уровне, что и UITableView, но до него).


У меня была такая же проблема, и я уверен, что у меня там был UIView. Просто скопировав весь вид таблицы, удалив ее и вставив ее, я снова установил ее для меня.


У меня также возникла проблема, что tableView не был последним видом в иерархии. В моем случае у меня был вид сверху (хотя они не перекрывались друг с другом), поэтому я перетащил его выше таблицыView в иерархию и сделал это.


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

Я, должно быть, перетащил UIView туда случайно, но я не мог выбрать его, чтобы не удалять.


Я делаю это программно, и я просто переместил мой addSubview (tableView) на дно после добавления всех моих других подзонов, и он решил мою проблему!

Не уверен, почему это появляется только на устройстве, а не на моем симуляторе, но в любом случае, по крайней мере, есть простое решение!


Я просто нашел решение для этого.

Просто выберите tableview и clic Editor -> Упорядочить -> Отправить на фронт

Это сработало для меня и надеюсь, что это поможет всем вам.


проверить

if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
    [tableView setSeparatorInset:UIEdgeInsetsZero];
}
  • указать функцию делегата tableview cellForRowAtIndexPath:
  • он может обрабатывать как ios 6, так и 7.

Ничего из этого не помогло мне. но это помогло :

self.tableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0)

вместо «-64» вы можете поместить любое другое число в зависимости от высоты вашей панели навигации.





ios7