Есть ли ячейки UITableView
шоу на пустом месте при прокрутке вниз?
Если это так, то проблема может заключаться во вставке, которая добавляется к UITableView
контроллеру навигации, который вы видите. Вставка добавляется в табличное представление для размещения содержимого под панелью навигации, когда прокрутка не происходит. При прокрутке таблицы содержимое прокручивается и отображается под прозрачной панелью навигации. Такое поведение, конечно, желательно только в том случае, если табличное представление начинается непосредственно под панелью навигации, что здесь не так.
Еще одна вещь, на которую следует обратить внимание, это то, что iOS корректирует содержимое вставки только для первого представления в иерархии представлений, если оно есть UIScrollView
или его потомок (например, UITableView
и UICollectionView
). Если ваша иерархия представлений включает в себя несколько представлений прокрутки, automaticallyAdjustsScrollViewInsets
внесите коррективы только в первое.
Вот как можно изменить это поведение:
а) Интерфейсный Разработчик
- Выберите вид контроллера
- Инспектор открытых атрибутов
В инспекторе атрибутов IB (когда выбран контроллер представления) есть свойство «Настроить вставки вида прокрутки», которое включено по умолчанию. Снимите этот флажок:
(Изображение предоставлено Dheeraj D )
Я не уверен, какая версия Xcode представила эту опцию (не заметила ее в примечаниях к выпуску), но она по крайней мере доступна в версии 5.1.1.
Изменить: чтобы избежать путаницы, это был третий вариант, упомянутый в комментариях
б) программно
Добавьте это к ie viewDidLoad
(кредиты на ответ Славко Петковски и комментарий Криса Р )
// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;
// Swift
self.automaticallyAdjustsScrollViewInsets = false
в) Это может быть актуально для старых школьников
Вы можете исправить это, добавив
tableView.contentInset = UIEdgeInsetsZero
//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero
Или если вы используете IB и если панель навигации не прозрачна (не видно по скриншоту)
- Выберите вид контроллера
- Инспектор открытых атрибутов
- В параметрах View Controller «Расширить края» снимите флажок «Under Top Bars»
У меня была такая же проблема, и я почти уверен, что когда-то там был UIView. Просто скопировав все табличное представление, удалив его и вставив снова, я исправил это.
источник
Выберите вид таблицы в вашей раскадровке и убедитесь, что стиль установлен на «Обычный», а не «Сгруппированный». Вы можете найти этот параметр на вкладке «Инспектор атрибутов».
источник
В моем случае у меня была UILabel под UITableView в иерархии представления.
Я переместил его «вперед», и появилось пустое пространство. Не уверен, почему, но он работает следующим образом, если в tableView есть что-то, он скрывает пустое пространство.
Также вы можете попробовать установить / снять флажок «Настроить вставки вида прокрутки» в инспекторе контроллера представлений на раскадровке.
источник
Ничто из перечисленного не помогло мне. но это помогло :
вместо «-64» вы можете указать любой другой номер в зависимости от высоты панели навигации.
источник
Там может быть предварительно добавлено
UIRefreshControl
. У меня есть эта проблема с кодом, как это:Как видите, я установил
self.refreshController
сразу послеinit
Но, если вы установите
refreshControl
после установки, то top-space вам не мешает.источник
Если вы делаете это на iOS 11, автоматически AdjustsScrollViewInsets не будет работать, поскольку это устарело, следующий код работал для меня согласно ответу в этом посте: https://stackoverflow.com/a/44391269/5476481
Надеюсь это поможет.
источник
В раскадровке, установите
contentInsets
из вашихtableview
в Невераисточник
Я не могу сказать наверняка, но похоже, что у вас есть дополнительный UIView, застрявший между тем, где начинаются ячейки прототипа, и вершиной UITableView. Мое изображение выглядит точно так же, как ваше, если вы удалите текст / строки, которые я добавил.
источник
Я до сих пор не уверен, что вызвало это дополнительное пространство вверху, но я обнаружил, что удаление UITableView с пробелом и замена его новым заняло место.
Должно быть, я случайно перетащил туда UIView, но не мог выбрать его, поэтому не мог удалить.
источник
Swift 5
Попробуй с удалением tableHeaderView и tableFooterView
источник
Проверьте вашу рамку таблицы в раскадровке или XIB. Мой по умолчанию имеет значение позиции Y, следовательно, ошибка
источник
В моем приложении также возникла такая проблема. Я установил верхний край таблицы равным нулю. Также попробовал установить
false
дляautomaticallyAdjustsScrollViewInsets
. Но не сработало.Наконец-то я получил рабочее решение. Я не знаю, это правильный путь. Но реализация
heightForHeaderInSection
метода делегата работала для меня. Вы должны вернуть ненулевое значение, чтобы работать с этим (возвращаемый ноль будет отображать то же пространство, что и раньше).источник
В 2017 году у меня работает просто эта линия
navigationController? .navigationBar.isTranslucent = false
Я понятия не имею, почему это могло бы даже повлиять на это. Возможно, кто-то мог объяснить. Но я почти уверен, что это ответ, который ищет большинство людей.
источник
В iOS 11 и более поздних версиях Apple изменила свойство для настройки вставки содержимого. Использование
contentInsetAdjustmentBehavior
и установите.never
для удаления дополнительного пространства вышеUICollectionView
,UIScrollView
,UITableView
.Я надеюсь, что это поможет вам.
источник
Что ж, для меня проблема возникла, когда я перетащил прототип ячейки из меню в представление таблицы. Поэтому я удалил это и просто установил для прототипа ячейку 1 в свойствах инспектора табличного представления
источник
Я делаю это программно, и я просто переместил свой addSubview (tableView) вниз после добавления всех моих других подпредставлений, и это решило мою проблему!
Не уверен, почему это появляется только на устройстве, а не на моем симуляторе, но в любом случае есть простое решение!
источник
Пока UITableView не является первым подпредставлением контроллера представления, пустое пространство не появится.
Решение: Добавьте скрытый / чистый объект представления (виды, метки, кнопки и т. Д.) В качестве первого подпредставления контроллера представления (на том же уровне, что и UITableView, но перед ним).
источник
UIView можно вставить вверху и внизу таблицы (перетаскивание). Установите их свойства как прозрачные и высотой 1 пикс. Это делается для того, чтобы убрать лишнюю прокладку перед ячейками.
источник
У меня также была эта проблема: tableView не был последним представлением в иерархии. В моем случае у меня было представление выше (даже если они не перекрывали друг друга), поэтому я перетащил его над таблицей в иерархии, и это было сделано.
источник
Я только что нашел решение для этого.
Просто выберите вид таблицы и нажмите Редактор -> Упорядочить -> Отправить на фронт
Это сработало для меня и надеюсь, что это поможет вам всем.
источник
В моем случае я использовал ContainerViewController и помещал в него UITableViewController. После удаления ContainerViewController. Проблемы уходят.
источник
Ошибка Xcode 8 ...
Попробуйте сначала, если ваш стиль раскадровки UITableView установлен на Plain.
Установите стиль таблицы на Сгруппированный, а затем вернитесь к Обычному Это удалило место в моем приложении во главе моего UITableView.
источник
В моем случае я использовал вид контейнера. (Основной вид -> Вид Contaner -> UITableView)
Я думаю, что дополнительное пространство сверху похоже на пространство панели уведомлений устройства (где отображается время, батарея). Я действительно, это не предположение.
То, что я сделал, было от UI Builder:
источник
Вы можете использовать этот код в viewDidLoad или viewDidAppear, где создается ваша таблица:
источник
I just found a solution for this. In my case, i was using TabBarViewController, A just uncheck the option 'Adjust Scroll View Insets'. Issues goes away.
https://i.stack.imgur.com/vRNfV.pngисточник
установите Расширенные края ViewController в раскадровке так, чтобы
underTopBar
свойство не проверялось.источник
Была такая же проблема. Я решил это, добавив следующее к viewDidLoad.
источник
Установите содержимое вкладок на ноль:
источник
проверить
источник