Я перетащил простой Jane UITableView на UIViewController в iOS 7.
Теперь перед началом первой ячейки есть вертикальное смещение пространства. Как мне от этого избавиться? Я хочу, чтобы первая строка была намного ближе к верхнему краю того места, где на самом деле начинается UITableView. Я же не просил о большом смещении?
Любые идеи?
uitableview
ios7
user798719
источник
источник
Ответы:
По умолчанию контроллеры табличного представления заполняют содержимое под панелью навигации, чтобы вы могли прокручивать содержимое под ним и видеть его в размытом состоянии под панелью навигации / панелью инструментов.
Похоже, вы позиционируете его на 44 (может быть, 64) пикселя, чтобы вывести его из-под панели навигации, но он уже компенсирует это, поэтому вы получаете большой промежуток.
Перейдите в раскадровку / xib в IB и снимите отметку с показа содержимого в разделе «Материал панели навигации».
источник
Adjust Scroll View insets
, удалите галочку.Новая реализация UIViewController для iOS 7 имеет новый набор параметров, который позволяет разработчику выбирать, будет ли система автоматически добавлять вставки для UIScrollView , UITableView и производных.
Чтобы отключить это поведение, снимите эти флажки для всех желаемых UIViewControllers в InterfaceBuilder в инспекторе объектов, выбранных UIViewController :
Больше подробностей:
источник
Из руководства по переходу на iOS7:
источник
Adjust Scroll View Insets
флажок для макета контроллера представления.automaticallyAdjustsScrollViewInsets = NO
в контроллере представления.У меня была аналогичная проблема, после увольнения viewController contentOffset из моего tableView был изменен на (0, -64).
Мое решение было немного странным, я попробовал все остальные ответы, но безуспешно, единственное, что устранило мою проблему, - это переключить позицию tableView в дереве элементов управления .xib
это был первый элемент управления в родительском представлении вроде этого:
Я переместил tableView сразу после ImageView, и он сработал:
кажется, что установка представления таблицы в первую позицию вызывала проблемы, а перемещение представления таблицы в другое положение устранило проблему.
П.Д. Я не использую ни autoLayout, ни раскадровки
надеюсь, это может кому-то помочь!
источник
это решает мою аналогичную проблему:
источник
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
Попробуйте использовать это
tableView.separatorInset = UIEdgeInsetsZero;
Очевидно, что если вы поддерживаете что-то меньшее, чем iOS7, вам необходимо убедиться, что объект реагирует на этот селектор, прежде чем его вызывать.
источник
Серьезно, изменение
contentOffset
- не выход. Вы просто исправляете проблему, а не устраняете причину. Я столкнулся с той же проблемой, и оказалось, что сгруппированные tableView имеют отступ сверху. В моем случае установка типа plain сделала свое дело .Надеюсь, это кому-то сэкономит несколько минут. З.
источник
С iOS 9 ни один из других ответов с этой страницы у меня не работал (например, снятие флажков в раскадровке, установка
automaticallyAdjustsScrollViewInsets
наNO
).Мое обходное решение, которым я действительно недоволен, заключалось в следующем:
Те же строчки в
viewWillAppear
илиviewDidLoad
оказались неэффективными.источник
Adjust Scroll View insets
флажка работает для iOS 9.Иногда я получаю
64
разрыв по высоте в верхней части представления таблицы, когдаUIViewController
он встроен в контроллер навигации.Раньше я просто воссоздавал все заново, надеясь, что ограничения окажутся правильными после чистого листа.
TIL: Если вы не хотите делать вертикальное ограничение для
Top Layout Guide
, вы можете удерживатьOption
клавишу для доступа кContainer Margin
.Затем убедитесь, что для
Top Space to Superview
константы установлено значение0
. По крайней мере, это сработало для меня.источник
Это работает для меня:
источник
Если вы добавите пустой UIView перед UITableView (или любое представление с возможностью прокрутки, например ScrollView и TextView), вам может повезти.
источник
У меня был UITableViewController, встроенный в представление контейнера. Чтобы избавиться от нежелательных 64 точек вертикального пространства, мне нужно было снять галочку с «Adjust Scroll View Insets» в Interface Builder и установить contentInset UITableView в viewWillAppear моего UITableViewController, как показано ниже.
Размер вертикального пространства соответствует высоте рамки панели навигации и смещению по оси Y. Проблема возникла только на iOS 7.
источник
В Xamarin iOS эта проблема возникала на фоновом UITableViewController сразу после закрытия модального диалогового окна переднего плана. В процессе перехода на передний план для UITableViewController были установлены вставки (где-то iOS):
Этот класс решил это
источник
Время от времени я возвращаюсь к этой ужасной ситуации и замечаю, что она до сих пор совершенно неизвестна. Итак, на память о будущем ...
В последнее время я исправляю этот обходной путь.
Не спрашивайте меня, почему, я все еще думаю, что это ошибка глубоко в UIKit.
источник
Если вы перейдете в раскадровку, вы можете изменить смещение, выбрав таблицу и в разделе «Просмотр таблицы» в Инспекторе атрибутов вы просто измените значение «Вставки разделителя» слева на 0.
источник
Я думаю, что реальное решение состоит в том, чтобы настроить ваши верхние и нижние ограничения в tableview, равные topMargin и bottomMargin. Не верхнее руководство по макету и нижнее руководство по макету. Это позволяет автоматически сохранять значение AdjustsScrollViewInsets истинным.
источник
Решение Swift 3:
источник
Если вы внедренный ваш TableViewController в NavigationController или ContainerView,
You have to constraint to margins instead of top Layout guide in Storyboard
.Check constraint to margins when you are doing the constraints
Никакой другой способ у меня не работал. Я не мог комментировать, поэтому просто повторяю ответ Роберта Ченса.источник
Я попробовал несколько ответов. Изменение настроек в раскадровке вызвало проблемы с наложением меню, которое появляется слева.
У меня есть только пустой UIViewController в раскадровке, иначе все сгенерировано программно.
У меня такая же проблема с UITableView внутри UIView внутри UIViewController. А именно, заголовки разделов начинаются слишком далеко, когда UIViewController встроен в контроллер навигации. Без контроллера навигации все работает нормально.
Чтобы решить эту проблему, я создал UILabel и с ограничениями поместил нижнее ограничение UILabel = верхнее ограничение UIView (чтобы оно не отображалось на экране. Теперь с этим дополнительным элементом управления (новый ярлык) TableView ведет себя правильно.
источник
У меня была такая же проблема в iOS 11 и xib, UITableviewController, и я решил ее, как показано ниже
источник