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» вы можете поместить любое другое число в зависимости от высоты вашей панели навигации.